Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.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
Cordova,ajax跨域调用使用jQuery工作,但不使用XMLHttpRequest_Ajax_Cordova_Xmlhttprequest_Cors_Web Worker - Fatal编程技术网

Cordova,ajax跨域调用使用jQuery工作,但不使用XMLHttpRequest

Cordova,ajax跨域调用使用jQuery工作,但不使用XMLHttpRequest,ajax,cordova,xmlhttprequest,cors,web-worker,Ajax,Cordova,Xmlhttprequest,Cors,Web Worker,My config.xml的“域访问”设置为“*”。 我无法更改远程服务器的头(这是一个硬件设备)。 我的跨域jQuery.ajax调用运行良好。 但是如果我使用XMLHttpRequest进行相同的调用,它们就不起作用了!(我正在从jQuery切换到XHR,因为我需要将ajax放入web worker中) 我正在使用这个函数: myapp.ajax=function(){ var o = arguments[0]||{}, url = o.url||null,

My config.xml的“域访问”设置为“*”。 我无法更改远程服务器的头(这是一个硬件设备)。 我的跨域jQuery.ajax调用运行良好。 但是如果我使用XMLHttpRequest进行相同的调用,它们就不起作用了!(我正在从jQuery切换到XHR,因为我需要将ajax放入web worker中)

我正在使用这个函数:

myapp.ajax=function(){
    var o = arguments[0]||{},
        url = o.url||null,
        cache = o.cache||true,
        timeout = o.timeout||0,
        callback = arguments[1]||function(){}
    ;
    if(!url)return null;
    var myRequest = new XMLHttpRequest();
    myRequest.timeout = timeout;

    var urlToCall=url;
    if(!cache){
        urlToCall += urlToCall.indexOf('?')==-1 ? '?' : '&' ;
        urlToCall += '_=' + Date.now() ;
    }

    myRequest.onreadystatechange=function() {
      if (myRequest.readyState == 4) {
        if (myRequest.status == 200)    {
            callback(myRequest.responseText,'success',myRequest);
        } else {
            callback(myRequest,'error',myRequest.statusText);
        }
      }
    }

    myRequest.open("GET",urlToCall,true);
    myRequest.setRequestHeader("Access-Control-Allow-Origin", "*");
    myRequest.setRequestHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    myRequest.setRequestHeader("Access-Control-Allow-Methods","POST, GET, OPTIONS, DELETE, PUT, HEAD");
    myRequest.send(null);
}
我的猜测是(由于缺乏关于它到底是如何工作的详细信息),因为您正在将worker作为Blob加载(我猜使用Blob中的
createObjectURL
,并将输出传递给
worker
构造函数),所以CORS将失败,而不管有什么头,因为它没有为
Blob:
协议启用

尝试通过http将worker作为一个单独的文件加载,看看会发生什么