JQuery чтения XML не функция - PullRequest
0 голосов
/ 28 января 2010

Я явно что-то упустил. вот мой сценарий, а ниже - данные.

 $("#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>

Где это идет не так?

Ответы [ 2 ]

1 голос
/ 28 января 2010
$.ajax({
    ...
    success: function(xml) {
        var sChassisNumber= $(this).find("chassisnummer").text();
    }
});
alert(sChassisNumber);

Вы читаете результаты функции обратного вызова до того, как запрос AJAX завершится, и вызовет функцию обратно.

«A» в AJAX означает асинхронный. Операция все еще продолжается, когда скрипт попадает в строку после вызова $.ajax(). Вот почему вы должны передать функцию обратного вызова, чтобы выполнить ее после завершения.

1 голос
/ 28 января 2010

Установите firebug и посмотрите, что возвращается в деталях:

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

нажмите и изучите объект. возможно, $ (xml) уже является узлом xmlresponse, и вы пытаетесь найти в нем другой

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...