jQuery Ajax响应失败,字符无效

jQuery Ajax响应失败,字符无效,jquery,ajax,json,firebug,Jquery,Ajax,Json,Firebug,我正在调用一个ajax函数并返回一些JSON数据 我查看了数据,所有这些看起来都像是服务器得到了应有的响应 但是FireBug报告了一个问题,我的程序失败了 这是响应 {"status":"success","message":"item was added to cart OK","cost":38.5,"qty":11} 这是firebug的错误 SyntaxError: JSON.parse: unexpected character return window.JSON.parse

我正在调用一个ajax函数并返回一些JSON数据

我查看了数据,所有这些看起来都像是服务器得到了应有的响应

但是FireBug报告了一个问题,我的程序失败了

这是响应

{"status":"success","message":"item was added to cart OK","cost":38.5,"qty":11}
这是firebug的错误

SyntaxError: JSON.parse: unexpected character


return window.JSON.parse( data );
这是callstack的屏幕截图

这里是Javascript

$('.submitform').click( function() {
$.post( 'myrll.com/cart/add', $('[name=myform]').serialize(), function(data) {
    var new_data = jQuery.parseJSON(data);

    if(new_data.status=='error')
    {
        alert(new_data.message);
    }
    else
    {
        add_item_to_cart(new_data.cost,new_data.qty);
    }
},
'json' // I expect a JSON response
);
    $sys_message['status'] = 'success'
    $sys_message['qty'] = $total_items; //this is INT
    $sys_message['cost'] = $this->sfcart->total_cost_contents(); //FLOAT
    $sys_message['message'] = $message; //string

    echo json_encode($sys_message);return;
}))

最后是我的php服务器脚本

$('.submitform').click( function() {
$.post( 'myrll.com/cart/add', $('[name=myform]').serialize(), function(data) {
    var new_data = jQuery.parseJSON(data);

    if(new_data.status=='error')
    {
        alert(new_data.message);
    }
    else
    {
        add_item_to_cart(new_data.cost,new_data.qty);
    }
},
'json' // I expect a JSON response
);
    $sys_message['status'] = 'success'
    $sys_message['qty'] = $total_items; //this is INT
    $sys_message['cost'] = $this->sfcart->total_cost_contents(); //FLOAT
    $sys_message['message'] = $message; //string

    echo json_encode($sys_message);return;

您正在为响应参数而不是json对象分配字符串。这会给你一个错误。将直接对象指定给响应参数,而不是字符串

您当前的响应(字符串,因为它周围有一个“”)

您需要响应(对象无报价)

没有引号(“)。然后尝试它的工作方式。

1)它在
response=conv(response);
-string可能会失败


2) 确保
内容类型
设置为
application/json

我删除了这一行,它工作正常:我不确定原因,可能与解析冲突? 如果有人能解释这一点,那将对我自己和其他人有所帮助

 ,'json' // I expect a JSON response

我遇到了类似的问题。对从服务器返回的json值进行编码,并在客户端对其进行解码…我做到了,我将在1分钟内发布我的javascript代码。我们可以看到执行实际AJAX调用的代码吗?似乎您的AJAX响应存储为字符串文本,而不是javascript对象。这是因为您正在尝试解析json您不需要使用.parseJSON()显式解析json,而应该使用json字符串。如果您的web服务器返回一个JSON对象,并且您已指定您需要一个JSON响应,那么jQuery足够聪明,可以自行解决。请尝试删除该行并使用数据而不是新的_数据,然后查看发生了什么。我将添加我的php,因为我不确定发生了什么或如何添加“header”(“Content-type:application/json”);“上面的php代码如下:我删除了这一行,它成功了:,'json'//我希望有一个json响应,因为这是bcoz,您的数据没有以json格式从php端返回。如果您放回,'json'//并尝试在json编码上方的php端代码中添加“header(“Content type:application/json”);”。可能也会works@Thomas我想是的。只是皮纳尔不知道如何更好地格式化答案。