带有空响应的http-Get请求

时间:2013-01-17 17:25:05

标签: javascript jquery ajax

我想用JavaScript处理http请求的响应。你可以在这里找到一个简单的例子。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1">
  <title>JavaScript Test</title>
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
  <script type="text/javascript">
    function serviceCall() {
      $.ajax({
        type: "GET",
        url: 'http://localhost:8181/geoserver/wfs?Service=WFS&Request=GetFeature&Version=1.0.0&typename=topp:tasmania_water_bodies&SRS=EPSG:4326',
//        url: 'http://demo.opengeo.org/geoserver/ows?Service=WFS&Request=GetFeature&Version=1.0.0&typename=topp:tasmania_water_bodies&SRS=EPSG:4326',
        complete: function(xml, status){
          alert(xml.responseText);
        }
      });
    }
  </script>
</head>
<body>
  <center><button onclick="serviceCall()">Start...</button></center>
</body>
</html>

该请求直接在浏览器中运行。通过Ajax和JavaScript,响应为空。 Firebug在第1行第1列报告xml解析错误。我尝试将请求发送到localhost和远程服务器,但响应始终为空。我很感激任何建议。

1 个答案:

答案 0 :(得分:1)

为什么不使用success代替complete?由于complete始终被触发,即使失败也是如此,success仅在成功时触发。比你不需要xml, status

示例(自CORS以来不起作用):

$.ajax({
    type: "GET",
    url: 'http://localhost:8181/geoserver/wfs?Service=WFS&Request=GetFeature&Version=1.0.0&typename=topp:tasmania_water_bodies&SRS=EPSG:4326',
    success: function(response){
      alert(response);
    }
  });

此外,如果您不想访问其他域名。如果您拥有其他域,则可以使用JSONP。否则就不可能。

尝试将以下部分添加到网址:&outputFormat=json&format_options=callback:processJSON

工作无jQuery示例(这里的实例:http://jsfiddle.net/QWgJa/

function loadJSON(url)
{
    var headID = document.getElementsByTagName("head")[0]; 
    var newScript = document.createElement("script");
    newScript.type = 'text/javascript';
    newScript.src = url;
    headID.appendChild(newScript);  
}
function processJSON(jsonData)
{
    alert(jsonData); 
}

loadJSON("http://demo.opengeo.org/geoserver/ows?Service=WFS&Request=GetFeature&Version=1.0.0&typename=topp:tasmania_water_bodies&SRS=EPSG:4326&outputFormat=json&format_options=callback:processJSON");

信息网址