借雞生蛋:ajax跨域提交資料

來源:互聯網
上載者:User

星期五寫了個分類資訊的小東東!在資料庫裡只有ip地址,一般訪客不太清楚IP地址來源於哪個城市.如果在表裡多一個列儲存城市又沒有真實性可言.如果能把IP地址變成城市多好呀.當然可以去down下資料庫.可就為這個需求覺得有點浪費.還好了有好多網站提供查詢.如果能把它的結果變成我的.問題解決.
需要一個js函數.當每出來一條記錄時,就把ip替換為城市:

  1. <script type="text/javascript">
  2. function queryAddress(strID){
  3.       try{
  4.             var qIp=document.getElementById("ip_"+strID);
  5.             var qUrl='http://ip.wanvee.cn/GetIp.ashx?ipstr='+qIp.firstChild.nodeValue;
  6.             var ajax=new Ajax.Request(qUrl,{
  7.                      method:'get',  
  8.                      onSuccess:function(strResponse){
  9.                           var resContent=strResponse.responseText;
  10.                           var strStruct=resContent.substring(resContent.lastIndexOf(",")+1,resContent.length);
  11.                           qIp.innerHTML=strStruct.split(" ")[0];
  12.                      }
  13.             });
  14.       }catch(e){}
  15. }
  16. </script>

 

寫一個測試案例:

<span id="ip_2">221.123.123.123</span><script type="text/javascript">queryAddress('2')</script>

<span id="ip_3">221.123.123.123</span><script type="text/javascript">queryAddress('3')</script>

<span id="ip_4">221.123.123.123</span><script type="text/javascript">queryAddress('4')</script>

 

羅列一下我找的幾個查詢網址:
http://www.ip.cn/getip.php?action=queryip&ip_url=221.123.123.123
http://ip.wanvee.cn/GetIp.ashx?ipstr=221.123.123.123
以上兩個只返迴文本
http://www.youdao.com/smartresult-xml/search.s?type=ip&q=221.123.123.123
這個返回XML

寫完了,意識到一個問題.ajax不支援跨域提交.這也不成問題:我們用指令碼寫一個頁面.用msxml的load方法裝載目標網址!就可以搞到我們感興趣的資料!參考此貼:http://topic.csdn.net/t/20030619/12/1933920.html
js代碼稍微變一下:

  1. function queryAddress(strID){
  2.       try{
  3.             var qIp=document.getElementById("ip_"+strID);
  4.             var qUrl='queryiplocal.asp?ip='+qIp.firstChild.nodeValue;            
  5.             var ajax=new Ajax.Request(qUrl,{
  6.                      method:'get',  
  7.                      onSuccess:function(strResponse){
  8.                           qIp.innerHTML=strResponse.responseText;                         
  9.                      }
  10.             });
  11.       }catch(e){}
  12. }

 

下面的是ASP檔案源碼:

  1. <%
  2. Response.ContentType="text/xml"
  3. Response.Charset="GB2312"
  4. Dim strIP,strPattern
  5. strIP=Request.QueryString("ip")
  6. strPattern="^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$"
  7. If strIP="" Or IsNumeric(strIP) then
  8.        Response.End()
  9. ElseIf Not serRegValidate(strPattern,strIP) then
  10.        Response.End()
  11. End If
  12. Dim strURL:strURL="http://www.youdao.com/smartresult-xml/search.s?type=ip&q="
  13. set parser=Server.CreateObject("MSXML2.DOMDocument")
  14. parser.async=false
  15. parser.ValidateOnParse=true
  16. parser.setProperty "ServerHTTPRequest",true
  17. parser.load(strURL)
  18. if parser.parseError.errorCode<>0 then        
  19.         Response.End()
  20. end if                  
  21. set currNode=parser.selectNodes("//product")
  22. Dim strLocal:strLocal=currNode.item(0).selectSingleNode("location").text
  23. Response.Write Split(strLocal," ")(0)
  24. %>
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.