6

我想使用 jQuery$.ajax进行 POST 调用,发送一些信息(通过 POST,例如:page.aspx?var1=value....)。

但我也希望 jQuery 处理服务正在返回 JSON,以便我返回一个 JSON 对象。

var data = {name: _name, ...};

var request = $.ajax({
    url: url,
    type: "post",
    data: data,
    //dataType: "json"
});

只要我使用dataType: "json",它允许我接收 JSON 对象,我就会在请求中收到一个 parseerror !

希望你能帮我解决这个问题!

提前致谢!

4

4 回答 4

9

从请求的网址中,您必须以 JSON 格式制作数据,例如

echo json_encode($response);

然后您将在成功函数中获得响应 JSON,如下所示:

       $.ajax({
            type:"POST",
            url: "your_url",
            data:data,
            success: function (response){
                var arr = $.parseJSON(response);

            }
        });
于 2013-02-28T08:48:22.333 回答
0

首先 post 请求没有在 URL 之后附加参数。您指定的格式用于 GET 请求。您可以通过以下方式实现相同的目标:

$.post(
'/yourURLL',
{'data' : dataJson},
function(data){
    handleIncomingJSON(data);
}).error(function(data, textStatus){handleUnsuccessfulSave(data, textStatus)});
于 2013-02-28T08:45:59.107 回答
0

确保您的服务器端脚本返回编码的 json。

在 php 中使用json_encode().

echo json_encode($response);

也设置dataType : 'json'$.ajax通话中。

于 2013-02-28T08:36:27.110 回答
0

根据jQuery$.post文档,我强烈建议最初实现所有主要的回调方法(done, fail, always),这样如果您的 JSON 响应出现错误,它们就不会被隐藏:

var jqxhr = $.post( 
    "example.php", 
    function(response) {var arr = JSON.parse(response);},
    'json'
)
.done(function() {console.log( "second success" );})
.fail(function() {console.log( "error" );})
.always(function() {console.log( "finished" );});
于 2016-03-04T08:36:33.350 回答