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
Javascript Ajax请求总是抛出一个错误_Javascript_Ajax - Fatal编程技术网

Javascript Ajax请求总是抛出一个错误

Javascript Ajax请求总是抛出一个错误,javascript,ajax,Javascript,Ajax,这就是我的代码,它总是在Safari和Firefox中抛出错误。疯狂的事情是,如果我删除事件侦听器,并将响应类型更改为responseText,Internet Explorer将为我提供输出。我尝试了覆盖emimetype,但似乎没有帮助。如果我在Firefox或Safari中检查响应,我会得到null。我不知所措,任何帮助都将不胜感激 我应该提到的是,我更愿意为此避免任何第三方库 更新: 错误发生在进度事件期间,如果我选中.lengthComputeable我会得到错误 更新2: Safar

这就是我的代码,它总是在Safari和Firefox中抛出错误。疯狂的事情是,如果我删除事件侦听器,并将响应类型更改为
responseText
,Internet Explorer将为我提供输出。我尝试了
覆盖emimetype
,但似乎没有帮助。如果我在Firefox或Safari中检查响应,我会得到
null
。我不知所措,任何帮助都将不胜感激

我应该提到的是,我更愿意为此避免任何第三方库

更新: 错误发生在
进度
事件期间,如果我选中
.lengthComputeable
我会得到
错误

更新2: Safari为这个问题提供了更多信息:

function loaded() {
    var xmldoc,
    currenttime = new Date().getTime(),
    req,
    address = 'http://webservices.foo.com/eSignalQuotes/eSignalQuotes.asmx/GetDelayedQuotes?',
    symbols = 'symbols=' + '+c,s,ct,zw,kw,adm+', 
    cusip = '&cusip=',
    fields = '&fields=' + 'desc,month,year,recent,netchg,-decimal',
    type = '&type=' + 'future,stock,index',
    dispfullname = '&dispfullname=' + 'true',
    datefmt = '&datefmt=',
    timefmt = '&timefmt=',
    timestamp = '&' + Math.floor(currenttime/3600000),
    query = address + symbols + cusip + fields + type + dispfullname + datefmt + timefmt + timestamp;
    ;

    if(window.XMLHttpRequest) {
        req = new XMLHttpRequest();
    } else {
        req = new ActiveXObject("Microsoft.XMLHTTP");
    }

    req.addEventListener('error', function(e) {alert('Error');}, false);
    req.addEventListener('load', function(e) {xmldoc = req.responseText;}, false);
    req.open('GET', query, true);
    req.send();

}

我不能百分之百肯定,但在我看来,这个问题涉及到跨站点的沟通。我最后做的是让一个PHP脚本下载文件,然后用javascript在本地获取它

XMLHttpRequest cannot load Origin is not allowed by Access-Control-Allow-Origin.

@EliasVanOotegem,这是有效的查询字符串语法。如果我在浏览器中输入地址,它将正确地命中服务@epascarello:e.message给了我“未定义的”你有一个额外的分号
。没有
e.message
,因此它是未定义的。@Llepwryd执行
console.log(e)
检查错误对象。
<?php
    $mark = $_GET['mark'];
    $xmldoc = new DOMDocument();
    $xmldoc -> preserveWhiteSpace = false;
    $xmldoc -> formatOutput = true;
    $xmldoc -> load($mark);
    unlink('fenced.xml');   
    echo $xmldoc -> save('fenced.xml');
?>
localreq.open('GET', 'fenced.xml', true);
localreq.addEventListener('load', function(e) {xmldoc = localreq.responseXML;}, false);
localreq.send();