首先,我知道jsonp是如何工作的。
它从支持这类请求的服务器中将js代码注入callback ({a:1})
。
我有这个code连接到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。
Firebug:
当我将此文本粘贴到jsonlint时,删除第一行 - 它是一个有效的json。
如果我可以从结果中删除for(;;);
行 - 我可以解析结果。
我想捕获文本响应并用空字符串替换for(;;);
。
我想要jquery文档,我注意到了这个信息:
我确实尝试写jsonp text
但仍然错误。
如何在不显示错误的情况下获取结果并将for(;;);
替换为空字符串?