首先,我知道 jsonp 是如何工作的。callback ({a:1})
它从支持此类请求的服务器注入 js 代码。
我有这个连接到 facebook 的代码,它们返回一个无效的 json 结果。
他们确实支持 jsonp 原因使用带有数据类型的 jquery ajax:jsonp - DOES 返回值(虽然无效)
jsonp 调用的响应是:
for(;;); //<----------- the problem
{
"__ar": 1,
"error": 1357001,
"errorSummary": "Not Logged In",
"errorDescription": "Please log in to continue.",
"payload": {
"__dialog": {
"title": {
"__html": "Not Logged In"
},
"body": {
"__html": "Please log in to continue."
},
"buttons": [
{
"name": "login",
"label": "Log In",
"handler": "goURI(\"\/login.php\", true);"
}],
"modal": true,
"onloadRegister": ["setInterval(function () {\n if (getCookie(\"c_user\") || getCookie(\"csm\")) {\n window.location.reload();\n }}, 5000);"]
}
},
"js": ["8fTQS"],
"resource_map": {
"8fTQS": {
"type": "js",
"src": "https:\/\/s-static.ak.fbcdn.net\/rsrc.php\/v2\/y9\/r\/NXhpMFxH7x0.js"
}
}
}
当然 - 这是一个无效的 json。
萤火虫:
当我将此文本粘贴到 jsonlint 并删除第一行时 - 它是一个有效的 json。
如果我可以从结果 中删除该for(;;);
行 - 我可以解析结果。
我想捕捉文本响应并for(;;);
用空字符串替换。
我想查询文档,我注意到了这个信息:
我确实尝试过写jsonp text
但仍然出错。
如何获得结果并for(;;);
用空字符串替换而不显示错误?