代码之家  ›  专栏  ›  技术社区  ›  JP Silvashy Gautam Rege

了解JSONP和Rails的基础知识

  •  6
  • JP Silvashy Gautam Rege  · 技术社区  · 14 年前

    让我解释一下,假设我有一个app(app A)提供json响应,我如何使用jQuery从不同的站点调用该脚本,并加载json数据?我很确定我可以链接到应用程序a上的一个JS文件并使用它将数据加载到页面中,但除此之外,我对这样做的正确惯例有点迷茫。。。任何帮助都是非常感谢的,即使只是给我指出了正确的方向或文章将是可怕的。

    1 回复  |  直到 14 年前
        1
  •  8
  •   Hardryv    10 年前

    这真的很琐碎。

    $.ajax({
        dataType: 'jsonp',
        success: function(response) {
        }
    });
    

    在服务器端,返回如下数据

    '/**/' + params[:callback] + '("' + response + '");';
    

    /**/callback_name("my_response"); . my_response

    还可以返回json对象和数组,如 callback_name([1, 2, 3]);

    编辑
    水流是这样的。

    1. jquery发送ajax请求并提供 callback
    2. 服务器将有效的javascript代码作为响应写入。
    3. 浏览器执行返回的javascript代码。若它调用了回调函数,jquery会将传入回调函数的参数返回给您。

    还有一个 wikipedia article

    2015年编辑 请注意,由于存在安全漏洞,Rails改变了执行此操作的方式。它们使用JavaScript注释预先挂起函数调用,我将其添加到上面的代码中。 This is the code change in question.