2013-08-26 94 views
0

以下是从HttpMapRoute“的serviceUrl结果麻烦与JSON-解析

<ArrayOfProject> 
    <Project> 
     <AssignedUserId>5</AssignedUserId> 
     <CreatedByUserId>1</CreatedByUserId> 
     <CreatedOnDate>2013-08-15T01:18:37.443</CreatedOnDate> 
     <LastModifiedByUserId>1</LastModifiedByUserId> 
     <LastModifiedOnDate>2013-08-15T01:24:57.953</LastModifiedOnDate> 
     <ProjectDescription>Testing javascript and MVVM with DNN-platform 
     </ProjectDescription> 
     <ProjectId>1</ProjectId> 
     <ProjectName>javascript and DNN</ProjectName> 
     <Purpose>For fun</Purpose> 
    </Project> 
    <Project> 
     <AssignedUserId>5</AssignedUserId> 
     <CreatedByUserId>1</CreatedByUserId> 
     <CreatedOnDate>2013-08-15T01:18:37.443</CreatedOnDate> 
     <LastModifiedByUserId>1</LastModifiedByUserId> 
     <LastModifiedOnDate>2013-08-15T01:27:57.419</LastModifiedOnDate> 
     <ProjectDescription>DNN Module design in development and Skins 
     </ProjectDescription> 
     <ProjectId>2</ProjectId> 
     <ProjectName>CSS systems in DNN</ProjectName> 
    </Project> 
</ArrayOfProject> 

我的JSON-调用如下:

self.projectCollection = ko.observableArray([]); 

$.getJSON(serviceUrl, function (allData) { 
     var i = 0; 
     $.each(allData, self.projectCollection.push(new Project(allData[i++]))); 
    }); 

... 其中项目是一个功能:

function Project(data) { 
    var self = this; 

    self.projectname = ko.observable(data.ProjectName); 
    self.description = ko.observable(data.ProjectDescription); 
    self.assigneduserid = ko.observable(data.AssignedUserId); 
    self.createdondate = ko.observable(data.CreatedOnDate); 
    self.createdbyuserid = ko.observable(data.CreatedByUserId); 
    self.lastmodifiedondate = ko.observable(data.LastModifiedOnDate); 
    self.lastmodifiedbyuserid = ko.observable(data.LastModifiedByUserId); 
} 

为什么我的“projectColletion”填充的项目比第一个项目多?

+0

的响应是XML,JSON不是。您不能使用'$ .getJSON'来加载XML数据。 –

+0

看起来像xml,那么在你的'$ .getJSON'得到它之前,它会变成一个实际的json字符串吗? –

回答

0

如果是将要得到实际的XML然后执行以下操作:

$.get(serviceUrl, { 
    dataType: 'xml', 
    success: function (allData){ 
     $.each(allData.find("Project"), function(index,value){ 
      self.projectCollection.push(new Project(value)) 
     }); 
    } 
} 
+0

响应是如何在浏览器中处理'http:// localhost/$ serviceUrl'时出现在我的浏览器中...... 可能是浏览器中的演示文稿? 如果它是xml,那么我认为getJSON会得到第一个记录? –

+0

如果这是你在浏览器中得到的,那么它的xml而不是json,这意味着你需要使用$ .get函数来获取数据 –

+0

这是有道理的。 :) 的是我居然得到了它与此代码的工作: $ .getJSON(的serviceUrl,函数(ALLDATA){VAR I = 0; $。每个(ALLDATA,功能(I,FB){ self.projectCollection.push(new Project2(allData [i ++])); }); }); –