我调用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的屏幕截图;
以下是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;
答案 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