使用JSONP对JSON文件进行跨域Ajax请求

我想从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://<your service url here>/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对JSON文件进行跨域Ajax请求 的全部内容, 来源链接: utcz.com/qa/397497.html

回到顶部