2013-06-22 19 views
0

我正在使用php來生成一些包裝在html5標記中的json數據,我不確定jquery如何知道返回的數據類型。jquery如何知道要返回的數據類型

這是PHP

echo '<section id="stuff">'; 
echo json_encode($jsonData); 
echo '</section>'; 

要獲得部分標籤內的數據,我這樣

$.ajax({          
     url: 'getdata.php',       
     data: "",  
     dataType: 'html',     
     success: function(data)   
     { 
     var thedata = $(data).filter('#stuff').html(); 
     var jobject = JSON.parse(thedata); 
     for(var i = 0; i < jobject.length; i++) { 
    var item = jobject[i]; 

這裏被指定具體的數據類型將是HTML處理我的數據,但是當我指定json,沒有顯示,但獲得成功。

然後我使用jquery獲得速記,一切正常。

$.get('getdata.php', function(data) { 
     var thedata = $(data).filter('#stuff').html(); 
     var jobject = JSON.parse(thedata); 
     for(var i = 0; i < jobject.length; i++) { 
     var item = jobject[i]; 

是否jQuery的速記方法猜我的dataType是HTML ?.

回答

1

dataType爲jQuery提供了一個有關服務器響應類型的提示,在第一個示例中,jQuery預期響應爲文本(當然,HTML會使用腳本標記評估),但是當您在數據類型中指定JSON時試圖將其轉換爲JavaScript對象,這將失敗。

在後面的例子中,jQuery已經猜到了響應是JSON,忽略了過濾器並轉換爲HTML,並將$(data)作爲JavaScript對象處理。總的來說,我沒有理由在HTML中封裝從服務器編碼的JSON對象,應該像其他對象一樣對其進行結構化和解析。

<section id="stuff"> 
'{ "Object": [{"Value" : "1", "Text" : "2 in HTML"},{"Value" : "2", "Text" : "3 in HTML"}] }' 
</section> 

var json = '{ "Object": [{"Value" : "1", "Text" : "2"},{"Value" : "2", "Text" : "3"}] }' 

    var jobject = JSON.parse(json); 
    for(var i = 0; i < jobject.Object.length; i++) { 
     var item = jobject.Object[i]; 
     alert(item.Value); 
    } 

var jsonInHtml = $("#stuff").html(); 

var jobject = JSON.parse(jsonInHtml); 

// A JavaScript object won't be frmed at this point 

for(var i = 0; i < jobject.Object.length; i++) { 
     var item = jobject.Object[i]; 
     alert(item.Value); 
} 

Fiddle

+0

的原因,我包裹JSON這種方式,是因爲我有一氣呵成得到大量的數據,就像從4個表中的所有related.Have你的任何想法我怎麼能從一個json對象中的所有4中獲取數據,而不是將4個不同的數據集合構建爲4個獨特的標籤? – Gandalf

相關問題