2014-01-10 82 views
0

我是jquery的新手。我正在嘗試使用html和jquery使用http://www.webservicex.net/geoipservice.asmx?op=GetGeoIP的Web服務。我寫了下面的代碼:嘗試使用jQuery使用Web服務時出錯

<!DOCTYPE html> 
    <page language ="html" validateRequest="false"> 
    <html> 
<head> 
    <title>Hello There</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"> type="text/javascript" > </script> 
</head> 
<body> 
     <div> 
     IPAddress: <input type="text" name="id" id="theId"/> 
     <br /> 
     <button id="getRemoteResponseBt">Get remote response</button> 
     </div> 
     <script> 
     var url='http://www.webservicex.net/geoipservice.asmx?op=GetGeoIP'; 
     var dataMessage= 
     '<?xml version="1.0" encoding="utf-8"?> \ 
     <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> \ 
     <soap:Body> \ 
     <GetGeoIP xmlns="http://www.webservicex.net/"> \ 
     <IPAddress>+theId.val()+</IPAddress> \ 
     </GetGeoIP> \ 
     </soap:Body> \ 
     </soap:Envelope>'; 

$("#getRemoteResponseBt").click(function() { 
    $.ajax({ 
    url: url, 
    dataType: "xml", 
    data: dataMessage, 
    processData: false, 
    contentType: "text/xml; charset=\"utf-8\"", 
    success: function(text) { 
     var xml = $(text); 
     var id = xml.find('IP').text(); 
     var name = xml.find('CountryName').text(); 
     var code = xml.find('CountryCode').text(); 
     alert("Result:" + id +name+code); 
    }, 
    error:function (xhr) { 
     alert(xhr.responseText+"Error"); 
    } 
    }); 
return false; 
});   
</script> 
</body> 
</html> 

但是,當我點擊按鈕,每次它給出錯誤。任何人都可以幫助使代碼工作?對於Web服務描述檢查鏈接:http://www.webservicex.net/geoipservice.asmx?op=GetGeoIP

+0

*究竟是什麼*錯誤? – deceze

+0

感謝您的快速回復。我在警報中將錯誤顯示爲「未定義」。您可以在html文件中運行此代碼並檢查。 – user3181494

+0

是否調用成功函數?或者錯誤功能?文字的內容是什麼? 'xml'的內容? 'id'的內容? 'name'? 'code'? – Ishtar

回答

1

即試圖從域中的一個跨域後到由瀏覽器的same origin policy除非接收服務器實現CORS,它不禁止webservicex.net

該API旨在從服務器端腳本中調用,因爲同一來源不適用,因此您需要在您的域上找到備用服務或創建代理腳本。

+1

[這裏](http://jsfiddle.net/wE2vS/)是我正在做的看到錯誤的小提琴。如果有人想在瀏覽器的控制檯中看到錯誤,我可以在這裏看到它 – Grooveek