1

我是 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);

现在这是我的初步理解,我知道它充满了漏洞。但是,如果有人能指出我正确的方向,那就太棒了!

多谢!

4

2 回答 2

0

确保您的 Ajax 请求dataType: 'jsonp'改为指定。这将允许调用绕过同源策略并添加 jQuery 生成的回调函数名称。

确保您的服务器脚本可以检测到传递了回调函数名称并将响应包装在该函数中的事实。

例如,当使用回调调用您的服务时:

http://www.mycmssite.com/phppage.php?json=1&callback= jQuery17109598642324563116

您的回复将类似于:

jQuery17109598642324563116({json response here})

此外,success 属性应设置为现有函数,该函数将对接收到的 JSON 数据执行一些逻辑。

  • 阅读$.ajax 的文档以获取有关其他属性(如数据)的详细信息,以确保您了解此处的预期内容。
于 2012-06-05T11:09:57.133 回答
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 的要求过时。

于 2012-06-05T11:10:27.940 回答