4

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

我查看了数据,看起来服务器已按应有的方式响应

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

这是 JSON 响应

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

这是萤火虫的错误

SyntaxError: JSON.parse: unexpected character


return window.JSON.parse( data );

这是调用堆栈的屏幕截图;在此处输入图像描述

这是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;
4

3 回答 3

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}

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

于 2013-11-08T10:11:20.503 回答
0

我删除了这一行并且它起作用了:我不确定为什么,可能与 parse 冲突?如果有人能解释这一点,那将对我自己和其他人有所帮助

 ,'json' // I expect a JSON response
于 2013-11-08T10:26:14.197 回答
0

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

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

于 2013-11-08T10:17:41.593 回答