jquery如何知道要返回的dataType

时间:2013-06-22 12:49:28

标签: jquery

我使用php生成包含在html5标记中的一些json数据,我不确定jquery如何知道要返回的数据类型。

这是php

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

要获取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];

这里指定dataType是html但是当我指定json时,什么都没有显示但是get是成功的。

然后我使用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 个答案:

答案 0 :(得分:1)

dataType为jQuery提供了来自服务器的响应类型的提示,在第一个示例中,jQuery期望响应是文本(嗯,评估了脚本标记的HTML),但是当您在数据类型中指定JSON时,jQuery将尝试将其转换为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