jquery - 为什么这个 JSON 无效?

标签 jquery json

我正在将一些数据从服务器发送回页面。对我来说,它看起来像是有效的 JSON,但是,它被我的 jQuery.ajax() 调用中的错误处理程序捕获/处理。

这是显示的错误消息:

Error: Invalid JSON: ({"id":"#settingsResult","payload":"<form id=\"pwd_change_frm\" action=\"post\">\n    <div>\n        <div>\n            <div><\/div>\n            <div><label for=\"changepwd_password\">New Password<\/label><\/div>\n            <div><input type=\"password\" name=\"changepwd[password]\" title=\"Enter new password\" style=\"width:258px;\" id=\"changepwd_password\" \/><\/div>\n        <\/div>\n        <div class=\"spacer\">&nbsp;<\/div>\n        <div>\n            <div><\/div>\n            <div><label for=\"changepwd_password_confirm\">Confirm New Password<\/label><\/div>\n            <div><input type=\"password\" name=\"changepwd[password_confirm]\" title=\"Retype new password)\" style=\"width:258px;\" id=\"changepwd_password_confirm\" \/><\/div>\n        <\/div>\n        <div class=\"spacer\"><\/div>\n        <div><img id=\"pwd_chg_btn\" class=\"submit_btn\" src=\"\/images\/button_submit.gif\" alt=\"Button_submit\" \/><\/div>\n    <\/div>\n    <input type=\"hidden\" name=\"changepwd[_csrf_token]\" value=\"1b7f3529797245c0fc43c3ddf5ade30d\" id=\"changepwd__csrf_token\" \/><\/form>\n<div class=\"spacer\"><\/div>"})

顺便说一句,FF Firebug 正确解析返回的数据并正确显示 - 这就是为什么我不明白为什么 jQuery 似乎无法处理它。

这是进行调用的代码:

jQuery.ajax({
  type: 'POST',
  url: '/some_url?id='+this.id,
  timeout: 2000,
  success: function(result){ jQuery(result.id).html(result.payload); },
  error: function (xhr, ajaxOptions, thrownError){ alert('Error: '+ thrownError); }
});

最佳答案

此时回答可能没用,但我只是想我会注意到这个问题似乎与 $.parseJSON() 有关。

如果我删除所有出现的 \n,并将所有出现的 \" 替换为 \',它就会起作用。

或者,如果我双重转义它们,它就会起作用。

\\n
\\"

...这是有道理的,因为我相信 jQuery 只是做了一个 eval() (或者实际上是相同的事情),所以我猜转义 " 正在终止字符串并转义 \n 会引入一个无效的换行符。

关于jquery - 为什么这个 JSON 无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5052010/

相关文章:

javascript - jqGrid 对多列使用相同的数据字段

json - 如何重命名 pyspark 生成的 JSON?

json - 如何从可选的 AnyObjects 创建 SwiftyJSON 字典?

jquery ajax调用返回对象,如何获取对象值

JavaScript json 回调

jquery - Backbone.js 将其绑定(bind)到成功/错误回调?

javascript - Yii2 Ajax 过滤器 onblur

jQuery:在 Ajax 加载中只执行一次函数

javascript - 单击按钮时应用替换功能后,如何显示(不是通过警报,而是在文本区域本身)文本区域的值?

javascript - PDF在Safari中隐藏Jquery Modal