2014-10-28 55 views
0

当我使用$ .ajax从服务器获取数据时,格式看起来与$ .post请求结果不同。如何更改$ .post请求以获得与$ .ajax请求相同的格式?否则,我不能用我的for循环读出的数据:

工作代码$阿贾克斯:

[Object, Object, Object, Object] 

不工作代码:的$就在控制台

  $.ajax({ 
       url: "/fetchdata.php", 
       type: "POST",     
       dataType: "json", 
       data: "param=no", 
       success: function(data){ 
       console.log(data); 
        for(var i = 0; i < data.length; i++){ 

        $('#DOM').append('<li>'+ data[i].username +'</li>'); 
        } 
       }, 
       error: function(e){ 
        console.log(e); 
       } 
      }); 

结果$。员额:为$。员额在控制台

  var jqxhr = $.post("/fetchdata.php", function(data) { 
            console.log(data); 
           for(var i = 0; i < data.length; i++){ 

           $('#DOM').append('<li>'+ data[i].username +'</li>'); 
           } 
       }) 
        .done(function() { 
        }) 
        .fail(function() { 
        }) 
        .always(function() { 
      });  

结果:

[{"id_usesrs":"1","username":"A"},{"id_usesrs":"2","username":"B"},{"id_usesrs":"3","username":"C"}, 
{"id_usesrs":"4","username":"D"}] 
+0

您需要使用'{数据:无}'在'$ .post'请求刚刚就像你在'$ .ajax'请求中使用它并包含一个数据类型一样。除此之外,我没有看到任何电话区别。 – 2014-10-28 12:33:40

+0

'dataType:“json”'可能会有所作为。设置时它会为你解析数据。 – 2014-10-28 12:38:41

回答

3

你需要指定它返回JSON而不是字符串

$.post("/fetchdata.php", function(data) { ... }, 'json') 

$.post()最后一个参数是dataType$.ajax()

更多信息相当于http://api.jquery.com/jquery.post/

+0

谢谢,它完美的作品! – vuvu 2014-10-28 12:37:52

1

在$ .post返回数据类型未指定,

u SE这

  var jqxhr = $.post("/fetchdata.php", function(data) { 
               console.log(data); 
              for(var i = 0; i < data.length; i++){ 

              $('#DOM').append('<li>'+ data[i].username +'</li>'); 
              } 
          },'json') 
           .done(function() { 
           }) 
           .fail(function() { 
           }) 
           .always(function() { 
         });  
1

的原因是,在你的$。员额,没有指定reaturn的数据类型和数据类型的标准是“智能猜测”(比较http://api.jquery.com/jQuery.post/)。 所以服务器返回一个json格式的字符串,$ .post方法将它解释为一个字符串,而不是一个对象。这个字符串可以通过JSON.parse(string)变成一个json对象;
在您的$ .ajax调用中,您肯定将返回类型定义为json,因此$ .ajax mehtod会自动在字符串上使用JSON.parse。您可以使用可选的数据类型参数为$。​​员额方法(如图jQuery的API SPEC):

var jqxhr = $.post("/fetchdata.php", function(data) { 
            console.log(data); 
           for(var i = 0; i < data.length; i++){ 

           $('#DOM').append('<li>'+ data[i].username +'</li>'); 
           } 
       }, "json") 
        .done(function() { 
        }) 
        .fail(function() { 
        }) 
        .always(function() { 
      });