1

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 とリモート サーバーに送信しようとしましたが、応答は常に空です。アドバイスをいただければ幸いです。

4

1 に答える 1

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 を使用できます。そうでなければ、それは不可能です。

次の部分を URL に追加してみてください。&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");

情報URL

于 2013-01-17T17:30:26.593 に答える