具有文本文件和硬编码回调的跨域JSONP

时间:2011-11-20 18:25:07

标签: javascript jquery file callback jsonp

我知道它是流行的问题,人们通过在服务器端编写代理来解决它。但我想避免它,我有一个带有硬编码回调的文件jsonResponse()

jsonpResponse({"keys": ["0", "2", "3", "4", "5", "6"], "promoted": [3, 10, 44, 47, 47, 31], "upcoming": [187, 14, 285, 366, 322, 225]});

我希望从JQuery.ajax()的其他域中获取它:

$.ajax({
  type: "GET",
  url: URL + filename, 
  dataType: "text jsonp",
  jsonpCallback: "jsonpResponse",
  success: function(data) {
    // wrapping data
  }
});

我收到错误:

XMLHttpRequest cannot load http://first.domain/filename.jsonp. 
Origin http://second.domain is not allowed by Access-Control-Allow-Origin.

有没有办法以我想要的方式做到这一点?我真的必须使用代理吗?如果这是真的,那么为什么呢?

1 个答案:

答案 0 :(得分:3)

你是在误导$.ajax

你需要通过dataType: "jsonp";它不支持多个值。

请注意,由于您使用的是固定回调,因此您无法发出多个并发请求,或者它们会窃取彼此的回调。