JSON.load()的JSONP版本

时间:2012-03-29 04:21:58

标签: jquery ruby-on-rails ajax jsonp xss

我正在为我的公司编写一个网页小部件。此小部件必须从任何域(我们的网站,可能是客户CNAME)注入一个HTML片段到客户的网站,该网站可能位于任何域(Tumblr,blogspot,mydomain.com等)

JQuery.load()会完全按照我的意愿去做,除非我认为它不适用于JSONP。

此时我选择在客户端使用调用服务器的JSONP进行标准的JQuery.ajax()GET调用。服务器返回一个具有单个属性的对象(要注入的html),除了我还在努力使它不会阻塞HTML有效负载之外,这是一种工作。似乎我逃脱了HTML,它像魅力一样经过,但我正在寻找一种更好的方式......

FWIW,我在服务器端运行RoR。有关最佳实践的任何想法,以使其发挥作用?

这是我在客户端上使用的代码:

$.ajax({
dataType: 'jsonp',
url: "http://test.host:3000/widgets/widget_1?username=foo",
crossDomain: true,
success: function(data) { $("#my-div").html.(data.foo) }
});

我从服务器返回的内容:

JQueryCallback({"foo": "<div>bar</div>"})

我在Firebug控制台中遇到的错误:

未终止的字符串文字(指向div中open标记的开头)

我觉得它很窒息,但我不确定如何解决这个问题,或者这是否是最好的解决方法。

谢谢!

1 个答案:

答案 0 :(得分:0)

感谢您的帮助。我遇到的主要问题是:

  1. html()方法后的额外点和
  2. 我没有正确逃脱 JSON。
  3. 我现在正在使用to_json来更好地编码出去的html。