首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery - $.ajax将其他dataFormat返回为$post

jQuery - $.ajax将其他dataFormat返回为$post
EN

Stack Overflow用户
提问于 2014-10-28 12:30:03
回答 3查看 58关注 0票数 0

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

使用$ajax的工作代码:

代码语言:javascript
复制
            $.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);
                }
            });

控制台中的$.ajax结果:

代码语言:javascript
复制
[Object, Object, Object, Object]

不使用$.post的代码:

代码语言:javascript
复制
            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() {
            });     

控制台中的$.post结果:

代码语言:javascript
复制
 [{"id_usesrs":"1","username":"A"},{"id_usesrs":"2","username":"B"},{"id_usesrs":"3","username":"C"},  
 {"id_usesrs":"4","username":"D"}] 
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-10-28 12:34:29

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

代码语言:javascript
复制
$.post("/fetchdata.php", function(data) { ... }, 'json')

$.post()的最后一个参数是dataType$.ajax()中的等效值。

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

票数 3
EN

Stack Overflow用户

发布于 2014-10-28 12:36:40

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

使用这个

代码语言:javascript
复制
            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
EN

Stack Overflow用户

发布于 2014-10-28 12:40:27

原因是,在您的$.post上,没有指定reaturn数据类型,而且数据类型的标准是“智能猜测”(比较http://api.jquery.com/jQuery.post/)。因此,服务器返回一个json格式字符串,$.post方法将其解释为字符串,而不是对象。这个字符串可以用JSON.parse( string )转换为json对象;

在您的$.ajax调用中,您肯定将返回类型定义为json,因此$.ajax mehtod在字符串上自动使用JSON.parse。您可以为$.post方法使用可选的数据类型参数(如jquery规范所示):

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26608417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档