了解JSONP和Rails的基础知识

时间:2010-08-25 03:37:32

标签: jquery ruby-on-rails json

我很难找到关于用我的应用程序做JSONP的公认方法的一些基本信息......

让我解释一下,说我有一个在json中提供响应的应用程序(App A),如何使用来自不同站点的jQuery调用该脚本,并加载该JSON数据?我很确定我可以链接到应用程序A上的JS文件并使用它来将数据加载到页面中,但除此之外,我对这样做的适当约定有点迷失...任何帮助都是非常感谢,即使只是指着我正确的方向或文章会很棒。

1 个答案:

答案 0 :(得分:8)

这真是太微不足道了。

在客户端,您通常使用'jsonp'类型执行ajax请求。

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

在服务器端,您可以返回这样的数据

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

它会产生/**/callback_name("my_response");之类的东西。 my_response字符串将由jquery传递给ajax成功处理程序。

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

修改
流程将是这样的。

  1. jquery发送ajax请求并自动提供callback参数。
  2. 您的服务器会将有效的javascript代码写为回复。
  3. 浏览器执行返回的javascript代码。如果它调用回调函数,则jquery返回给你在回调函数中传递的参数。
  4. 还有一个wikipedia article,如果对jsonp有什么困惑。

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