2010-01-28 67 views
0

顯然我一定忽略了一些東西。這裏是我的腳本,下面是數據。jquery閱讀xml沒有功能

$("#kenteken").blur(function(){ 

    var sRegistrationNr = $(this).val(); 
    var sChassisNumber = false; 

    $.ajax({ 
    type: "GET", 
    url: "/activeContent/warrantyClaim/ajax-xml-response.php", 
    data: "return=auto&kenteken="+sRegistrationNr, 
    dataType: "xml", 
    success: function(xml) { 
    $(xml).find("xmlresponse").each(function(){ 
    $(this).find("data").each(function(){ 
     var sChassisNumber = $(this).find("chassisnummer").text(); 
    }); 
    }); 
    } 
    }); 

    alert(sChassisNumber); 

}); 

這裏是從XML文件(響應罰款)數據

- <xmlresponse> 
    <result>GPZB89</result> 
- <data> 
    <kenteken>GPZB89</kenteken> 
- <chassisnummer> 
- <![CDATA[ KNEFA2253N5000176 
    ]]> 
    </chassisnummer> 
    </data> 
    </xmlresponse> 

哪裏該走了?

回答

1
$.ajax({ 
    ... 
    success: function(xml) { 
     var sChassisNumber= $(this).find("chassisnummer").text(); 
    } 
}); 
alert(sChassisNumber); 

您正在閱讀的回調函數的結果AJAX請求完成並調用函數回來。

AJAX中的'A'代表異步。當腳本到達$.ajax()調用後的行時,該操作仍在繼續。這就是爲什麼你必須傳遞一個回調函數才能在完成時執行。

+0

謝謝!這讓我走了。 將警報置於成功功能中。但有沒有辦法從ajax調用之外的成功回調函數中獲取數據? (只是好奇)還是應該在成功回調中處理一切? 在呼叫之外擁有一個可以處理來自成功呼叫回來的數據的功能將是一件好事 – 2010-01-28 15:42:14

+0

當然,在回調中或之後都必須處理所有事情。您可以在回調中設置一個全局變量,如果需要,可以稍後閱讀。或者,如果你只是想避免內聯處理代碼,你可以定義一個頂級'函數chassisFound(){...}',並將其作爲'success:chassisFound'傳遞給它。順便說一句,避免手動構建'key = value'查詢字符串。你可以使用''kenteken ='+ encodeURIComponent(sRegistrationNr)',或者更好的辦法是讓jQuery爲你做:'data:{'return':'auto','kenteken':sRegistrationNr}'。 – bobince 2010-01-28 16:37:05

+0

太棒了!謝啦。 Yiihaa,我今天聰明瞭;) – 2010-01-28 17:06:22

1

安裝Firebug的,看看有什麼詳細返回:

console.log(xml); 
console.log($(xml)); //this will be clickable in console. 

點擊和探索的對象。也許$(XML)已經是xmlresponse節點並嘗試找到另一個在它