我是JSONP的新手,所以我希望有人能从头开始帮助我。
基本上我的情况是:
我有一台带CMS的服务器。我希望来自CMS的信息出现在其他几个网站上。
所以我想(但我不确定)我把我要传输的信息放在一个PHP变量中。然后我用
echo json_encode($json);
然后在网站上我希望显示关于我使用JQuery的信息:
$.ajax({
url: 'http://www.mycmssite.com/phppage.php?json',
dataType: 'json',
data: json,
success: callback
});
var myvar = success;
document.write(myvar);
现在这是我的初步理解,我知道它充满了漏洞。但如果有人能够指出我的方向很棒,那就太棒了!
谢谢堆!
答案 0 :(得分:0)
确保您的Ajax请求指定dataType: 'jsonp'
。这将允许调用绕过同源策略并添加jQuery生成的回调函数名称。
确保您的服务器脚本可以检测到传递了回调函数名称的事实,并且它将响应包装在该函数中。
例如,使用回调调用您的服务时:
http://www.mycmssite.com/phppage.php?json=1&callback= jQuery17109598642324563116
你的回答将是:
jQuery17109598642324563116({json response here})
此外,success属性应设置为现有函数,该函数将对其接收的JSON数据执行某些逻辑。
答案 1 :(得分:0)
$.ajax({
url: 'http://www.mycmssite.com/phppage.php?json',
dataType: 'json',
data: {Iwant:'theData', thisIs:'somejson'},
success: function(msg) {
console.log('server answered:', msg);
// do something with received message
}
});
CORS标题更像是
header("Access-Control-Allow-Origin", "*")
header("Access-Control-Request-Method", "GET")
header("content-type", "application/x-javascript")
这些标题使JSONP的要求过时。