Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何对另一个域进行ajax调用?_C#_Javascript_Jquery_Ajax - Fatal编程技术网

C# 如何对另一个域进行ajax调用?

C# 如何对另一个域进行ajax调用?,c#,javascript,jquery,ajax,C#,Javascript,Jquery,Ajax,我正在尝试为attask.com构建一个与RESTAPI通信的接口。他们的API很方便,因为它返回JSON。我认为这很完美,因为我可以忘记服务器端C#代码,只需使用jQuery和AJAX编写接口。但是,当我尝试向他们的API发出AJAX请求时,Chrome的javascript控制台中出现了一个错误: 访问控制不允许原点允许原点 这是什么意思?这是阻止请求的浏览器吗?若然,原因为何 更新: 如果我对服务器没有任何控制权,并且它不响应JSONP请求,那么我唯一的选择是使用服务器端REST客户端,让

我正在尝试为attask.com构建一个与RESTAPI通信的接口。他们的API很方便,因为它返回JSON。我认为这很完美,因为我可以忘记服务器端C#代码,只需使用jQuery和AJAX编写接口。但是,当我尝试向他们的API发出AJAX请求时,Chrome的javascript控制台中出现了一个错误:

访问控制不允许原点允许原点

这是什么意思?这是阻止请求的浏览器吗?若然,原因为何

更新:
如果我对服务器没有任何控制权,并且它不响应JSONP请求,那么我唯一的选择是使用服务器端REST客户端,让我的AJAX与自己的域通信,而不是尝试跨域吗?

您需要发出JSONP请求来执行跨域AJAX请求,您可以通过附加

callback=?

对于要使用JSONP将请求发送到的URL,JQuery对这一内置功能有很好的支持

或者,您可以使用现代浏览器支持的fututre标准,而其他浏览器则可以使用JSONP。

我发现这是最简单的方法。
jQueryJSONP是jQuery实现JSONP的替代解决方案

jQuery JSONP特性:

  • 网络故障或JSON响应格式错误时的错误恢复
  • 精确控制回调命名及其在中的传输方式 网址,
  • 具有相同回调名称的多个请求同时运行
  • 两种缓存机制(基于浏览器和基于页面)
  • 可以像任何其他AJAX请求一样手动中止请求
  • 超时机制
  • 从YouTube获取用户配置文件的示例代码

    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调用的末尾添加一个参数,您就完成了。还有比这更重要的事情,你没有描述任何一个。这很有趣。你知道有哪篇好文章能解释这一点吗?干杯