Jquery 为什么可以';我不能跨域加载数据吗?

Jquery 为什么可以';我不能跨域加载数据吗?,jquery,jquery-mobile,windows-phone-8,cordova,Jquery,Jquery Mobile,Windows Phone 8,Cordova,从Web主机获取som JSON数据时遇到一些问题。所以不,我只是为了得到google而分解了这个函数,它仍然没有检索到数据。没有发生任何事情,我已将下面的函数添加到应用程序中的按钮(onclick,return false yada yada): 模拟期间控制台中的输出: CommandString : DebugConsole/log/DebugConsole1659732817/"Lets load Google!" Log:["Lets load Google!","DebugConso

从Web主机获取som JSON数据时遇到一些问题。所以不,我只是为了得到google而分解了这个函数,它仍然没有检索到数据。没有发生任何事情,我已将下面的函数添加到应用程序中的按钮(onclick,return false yada yada):

模拟期间控制台中的输出:

CommandString : DebugConsole/log/DebugConsole1659732817/"Lets load Google!"
Log:["Lets load Google!","DebugConsole1659732817"]
The thread 0xfb0 has exited with code 259 (0x103).
CommandString : DebugConsole/log/DebugConsole1659732818/"The end"
Log:["The end","DebugConsole1659732818"]
The thread 0xff4 has exited with code 259 (0x103).
正如您所见,它在ajax之前和之后输出
日志
,而不是
完成
失败
事件触发器。如您所见,我已根据启用了cors和allowCrossDomainPages。为什么我在这方面失败了?谷歌不是我想阅读的来源,但我甚至无法让它发挥作用,所以

正如你看到的,我已经启用了cors

启用CORS(针对其他人的网站)不取决于您。要从
google.com
检索数据,必须启用CORS并允许您的源站从中提取数据。(如果他们想让每个人都能加载他们的内容,则有一个通配符,
*

还请注意,浏览器必须。所有最新的现代桌面浏览器都是如此,大多数移动浏览器也是如此,不过请注意,IE8和IE9都要求您使用非标准的
XDomainRequest
对象,而不是
XMLHttpRequest
(它们最终在IE10中实现了这一点),而jQuery确实为您解决了特定的跨浏览器问题(不会,也不会)。不过,有些插件可以

如果您控制远程端(例如,从中检索数据的Web主机),则可以通过响应飞行前调用和带有适当响应头的
GET
,在服务器级别启用CORS

更多:


您可以使用代理通过web服务器将呼叫路由到Google。如果您使用的是Microsoft IIS,则可以使用我在此处介绍的URL重写模块。如果使用Apache,则可以使用mod_代理通过网站服务器重定向跨域呼叫


这可能并不理想,但对您来说可能是一个合理的解决方案。

您可以使用Jsonp而不是Json,并且您应该没有问题:

     $.ajax({ 
        type: "POST",                                     
        url: 'http://DomainName.com/api.php',  
        dataType: 'jsonp',
        contentType: "application/json",
        cache: false,
      success: function(data)        
      {
       // append your data
      }

因为Google故意不返回正确的CORS头。我的web api在Azure中,我“到处”启用了CORS。仍然无法运行。也许你可以链接你提到的一个插件?@Jason94:我个人没有使用过任何插件,但应该给你几个选项。但是首先让它在IE以外的其他应用程序中运行,就像把问题分解成几个部分一样。阅读CORS规范,你必须非常精确地返回的标题对预飞行和实际请求的响应。例如,如果请求将包含请求标头,则必须在预飞行和响应中授权该请求标头,否则浏览器将阻止JavaScript代码看到响应。
     $.ajax({ 
        type: "POST",                                     
        url: 'http://DomainName.com/api.php',  
        dataType: 'jsonp',
        contentType: "application/json",
        cache: false,
      success: function(data)        
      {
       // append your data
      }