C# 如何对另一个域进行ajax调用?
我正在尝试为attask.com构建一个与RESTAPI通信的接口。他们的API很方便,因为它返回JSON。我认为这很完美,因为我可以忘记服务器端C#代码,只需使用jQuery和AJAX编写接口。但是,当我尝试向他们的API发出AJAX请求时,Chrome的javascript控制台中出现了一个错误: 访问控制不允许原点允许原点 这是什么意思?这是阻止请求的浏览器吗?若然,原因为何 更新:C# 如何对另一个域进行ajax调用?,c#,javascript,jquery,ajax,C#,Javascript,Jquery,Ajax,我正在尝试为attask.com构建一个与RESTAPI通信的接口。他们的API很方便,因为它返回JSON。我认为这很完美,因为我可以忘记服务器端C#代码,只需使用jQuery和AJAX编写接口。但是,当我尝试向他们的API发出AJAX请求时,Chrome的javascript控制台中出现了一个错误: 访问控制不允许原点允许原点 这是什么意思?这是阻止请求的浏览器吗?若然,原因为何 更新: 如果我对服务器没有任何控制权,并且它不响应JSONP请求,那么我唯一的选择是使用服务器端REST客户端,让
如果我对服务器没有任何控制权,并且它不响应JSONP请求,那么我唯一的选择是使用服务器端REST客户端,让我的AJAX与自己的域通信,而不是尝试跨域吗?您需要发出JSONP请求来执行跨域AJAX请求,您可以通过附加
callback=?
对于要使用JSONP将请求发送到的URL,JQuery对这一内置功能有很好的支持 或者,您可以使用现代浏览器支持的fututre标准,而其他浏览器则可以使用JSONP。我发现这是最简单的方法。
jQueryJSONP是jQuery实现JSONP的替代解决方案 jQuery JSONP特性:
function getProfile(userId) {
$.jsonp({
"url": "http://gdata.youtube.com/feeds/api/users/"+userId+"?callback=?",
"data": {
"alt": "json-in-script"
},
"success": function(userProfile) {
// handle user profile here
},
"error": function(d,msg) {
alert("Could not find user "+userId);
}
});
}
更多信息。google“JSONP”或可能重复的有趣内容。我尝试将其附加到我的url,但没有任何更改。这是一个非常简单的答案。您不能只追加callback=xxx。您必须首先有一个协作服务器,该服务器将查看回调参数,然后生成正确的脚本作为响应,该脚本将调用该回调并将JSON数据传递给它。然后,您必须使用
标记,而不是ajax调用才能到达其他域。然后,您必须创建正确的回调函数来接收数据。OP可以通过Google JSONP获取更多信息。@jfriend00,这更有意义。谢谢。@jfriend00 OP已经提到,他们的一个选择是使用jQuery进行客户端JSON请求,因此记住,他们可以使用jQuery ajax包装器方法,如getJSON,并使用我添加的答案,根据jQuery文档坚持JSONP响应。当然,他们可以使用jQuery提供帮助,但是1)你没有提到这一点,2)这个问题仍然有主办方的一面。您的回答听起来就像您所做的只是在ajax调用的末尾添加一个参数,您就完成了。还有比这更重要的事情,你没有描述任何一个。这很有趣。你知道有哪篇好文章能解释这一点吗?干杯