2013-08-26 92 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 ++])); }); }); –