我很难找到关于用我的应用程序做
JSONP的公认方法的一些基本信息……
让我解释一下,说我有一个应用程序(App A)在json中提供响应,如何使用来自不同站点的jQuery调用该脚本,并加载该JSON数据?我很确定我可以链接到应用程序A上的JS文件并使用它来将数据加载到页面中,但除此之外,我对这样做的适当约定有点迷失…任何帮助都是非常感谢,即使只是指着我正确的方向或文章将是非常棒的.
解决方法
这真的很微不足道.
在客户端,你通常使用’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]);
编辑
流程将是这样的.
> jquery发送ajax请求并自动提供回调参数.
>您的服务器将有效的JavaScript代码写为响应.
>浏览器执行返回的javascript代码.如果它调用回调函数,则jquery返回给你在回调函数中传递的参数.
还有一个wikipedia article,如果对jsonp是什么有混淆.
2015年编辑
请注意,由于存在安全漏洞,Rails改变了他们执行此操作的方式.它们预先挂起了带有JavaScript注释的函数调用,我将其添加到上面的代码中. This is the code change in question.