AJAX调用时出错:错误:NetworkError:DOM异常19

时间:2013-07-29 10:35:31

标签: javascript ajax cross-domain jsonp

在制作跨域ajax请求时出现此错误。

错误:NetworkError:DOM例外19

请帮助解决这个问题。坚持不好:(

5 个答案:

答案 0 :(得分:2)

在Chrome中使用同步请求时出现此错误:

var req = new XMLHttpRequest();
req.open("GET", url, false) // false denotes synchronous call
req.send();

异步(我想要的)不会给我错误。

然后我发现服务器重写了URL。如果我使用了重写的URL,我没有收到错误。可能是一个Chrome错误,因为Safari处理同步,非重写的情况就好了。

不知道我是否会报告它,因为无论如何都不推荐使用同步XMLHttpRequests。

答案 1 :(得分:1)

常见错误是在期望http连接的服务器上发送https请求。

答案 2 :(得分:1)

为了让跨域AJAX调用起作用,我在服务器上使用了PHP ......

getRemoteUrl.php

<?php
if (preg_match("/^[();[]{}]+$/", $_GET['url'])) {
  //Something bad
} else {
  $ctx = stream_context_create(array('http' => array('timeout' => 10)));

  if (!(@$contents = file_get_contents($_GET['url'], 0, $ctx))) {
    //fail
  } else {
    //success
    echo $contents;
  }
}
?>

然后调用PHP文件并使用输出,就像直接调用网站一样。

function GetXmlHttpObject() {
  if (window.XMLHttpRequest) {
  // code for IE7+, Firefox, Chrome, Opera, Safari
    return new XMLHttpRequest();
  } else if (window.ActiveXObject) {
  // code for IE6, IE5
    return new ActiveXObject("Microsoft.XMLHTTP");
  } else {
   return null;
  }
}

var xmlhttp = GetXmlHttpObject();
if (xmlhttp === null) {
  //Your browser does not support XMLHTTP!
} else {
  xmlhttp.open("GET", "getRemoteUrl.php" + "?url=someRemoteUrl", false);
  xmlhttp.send();
  var webpage = xmlhttp.responseText;
  //do something with webpage
}

我建议使用异步;我使用同步简洁。 如果不是首选或可用的PHP,可以使用其他服务器端语言来完成此操作。

答案 3 :(得分:0)

DOM异常19指的是“网络错误”。您在Ajax调用中联系的URL是否可用?

如果服务器支持,则可以进行跨域请求!在进行实际的GET / POST调用之前,浏览器会向服务器发出OPTIONS调用,以检查它是否支持跨域请求。检查您联系的服务器是否支持跨域请求。 有关跨域请求的更多详细信息,请参阅此文章,该文章非常有用:Using CORS

答案 4 :(得分:0)

要避免使用Korz服务器的跨域策略,只需添加

即可
<script src="//tomodo-tools.s3.amazonaws.com/tomodo.korz-0.5.js"></script>

<head>,所有跨域请求都将通过tomodo.me路由,因此Access-Control-Allow-Origin header为'*'。