jQuery Ajax响应失败,无效字符

时间:2013-11-08 10:05:25

标签: jquery ajax json firebug

我调用ajax函数并获取一些JSON数据。

我看过数据,看起来服务器都应该响应

然而,FireBug报告了一个问题,我的程序失败了。

这是JSON的响应

{"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的屏幕截图; enter image description here

以下是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
);

});

最后是我的php服务器脚本

    $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;

3 个答案:

答案 0 :(得分:3)

您将字符串分配给响应参数而不是json对象。它会给你一个错误。将直接对象分配给响应参数而不是字符串

您当前的响应(字符串因为此处有一个“”)

response = "{"status":"success","message":"item was added to cart OK","cost":38.5,"qty":11}"

您需要响应(对象无引用)

response = {"status":"success","message":"item was added to cart OK","cost":38.5,"qty":11}

没有报价(“),然后试一试

答案 1 :(得分:0)

1)它在response = conv( response );失败了 - 可能是字符串吗?

2)确保Content-type设置为application/json

答案 2 :(得分:0)

我删除了这一行并且它有效:我不确定为什么,可能与解析冲突? 如果有人能够解释这个,那将对我和其他人有所帮助

 ,'json' // I expect a JSON response