Board logo

標題: ajax 讀取 web service xml 問題 [打印本頁]

作者: ponshane82503    時間: 2014-10-8 22:57     標題: ajax 讀取 web service xml 問題

大家好想問一個問題,是有關於jQuery Ajax的部分
我想要從http://egis.moea.gov.tw/innoserve/webservice/main.aspx這地方所提供web service取得資料回傳(xml)
我的查詢網址如下:http://egis.moea.gov.tw/MoeaEGFx ... 9863&buffer=800
這部分還ok,但是當我放進去ajax的時候卻無法跑,error一直alert我 undefined!!

程式碼如下:
$(document).ready(function(){

var Link = "http://egis.moea.gov.tw/MoeaEGFxData_WebAPI_Inside/InnoServe/BusinessBUSM?x=120.263309&y=22.629863&buffer=800";
function parse(document){
  alert("In1!");
  $(document).find("BUSMINFO").each(function(){
    $("#content").append(
        '<p>BussName: '+$(this).attr('BussName')+
        //'<br /> Title: '+$(this).find('title').text()+
        //'<br /> Author: '+$(this).find('author').text()+
        '</p>'
        );
  });
}



  $.ajax({
    url: Link, // name of file you want to parse
    dataType: "xml",
        type: 'GET',
        data: myData,
        contentType: "application/xml; charset=utf-8",
    success: parse,
        error:function (xhr, ajaxOptions, thrownError){
                alert(thrownError);
            }
        //error: function(){alert("Error: Something went wrong");}
  });
});
但當我把http://egis.moea.gov.tw/MoeaEGFx ... 9863&buffer=800這網頁下載下來當作xml檔放在本機端時,確沒有問題!

想知道我哪個部分做錯了,希望獲得指正!謝謝><
作者: wmh    時間: 2014-10-8 23:15

你是在自己的網站作 cross domain 的 ajax call 嗎? 這樣無法存取喔。

一般來說這樣的資料要透過自己後端的程式來抓,例如 Java、PHP、Python、ROR 等等。
前端要做 cross domain 的方式有很多種,但是都需要 server 端配合,我沒有細看,但是我猜測他們(egis.moea.gov.tw)沒有開放這樣的方式。
作者: ponshane82503    時間: 2014-10-9 00:01

您好,謝謝您剛剛給的回覆!因為我必須透過egis.moea.gov.tw所開放的web service去取他們提供的資料,您提到的用自己後端程式抓是指將她的xml結果抓下來嗎? 那與他們開放有什麼關係呢?不好意思這部分有點入門><
作者: wmh    時間: 2014-10-9 00:32

我是指如果你要用 JavaScript 會需要 server 端有開放或設定好 cross domain 的存取方式或權限。
但是如果你改用後端程式抓就不會有這個問題。
作者: ponshane82503    時間: 2014-10-9 17:12

回wmh大

謝謝你指點迷津,我改用php抓檔回傳給javascript
已經成功了!




歡迎光臨 jsGears.com 技術論壇 - AJAX, JavaScript, jQuery, 網站開發, 前端效能優化 (http://jsgears.com/)