使用JSONP跨域ajax请求到json文件

我想从domain2(example2.com)访问domain1(example.com)中的JSON文件。 例如,

$.ajax({ type:'get', url: 'http://example.com/vigneshmoha.json', success: function(data) { console.log(data); }, statusCode: { 404: function() { console.log('Status code: 404'); } } }); 

我想从其他域(即)example2.com向example.com发出此ajax请求。

我试过JSONP。 我无法理解它是如何工作的。 有人可以解释一下它的工作方式吗?

您的服务必须返回jsonp,这基本上是javascript代码。 您需要从ajax请求向服务提供回调函数,返回的是函数调用。

下面是一个工作示例。

ajax请求:

 $.ajax({ crossDomain: true, type:"GET", contentType: "application/json; charset=utf-8", async:false, url: "http:///HelloWorld?callback=?", data: {projectID:1}, dataType: "jsonp", jsonpCallback: 'fnsuccesscallback' }); 

服务器端代码返回jsonp(c#):

 public void HelloWorld(int projectID,string callback) { String s = "Hello World !!"; StringBuilder sb = new StringBuilder(); JavaScriptSerializer js = new JavaScriptSerializer(); sb.Append(callback + "("); sb.Append(js.Serialize(s)); sb.Append(");"); Context.Response.Clear(); Context.Response.ContentType = "application/json"; Context.Response.Write(sb.ToString()); Context.Response.End(); } 

请参阅什么是JSONP? 。

您是否尝试过将其称为:

 $.getJSON('http://example.com/vigneshmoha.json?callback=foo', null, function(data) { console.log(data); }); 

看看会发生什么?