Могу ли я взаимодействовать с XML после выполнения Jquery $ .ajax ()? - PullRequest
0 голосов
/ 21 октября 2010

Можно ли взаимодействовать с файлом XML после выполнения вызова $.ajax()?

IE:

.$ajax( 
url: "someUrl", 
type: "GET", 
dataType:"xml", 
success: function(xml){ //some function },
error : function(){ //some function}
});

$("#somebutton").click(function(xml){ //function that interacts with XML });

Я не смог взаимодействовать ни с одним файлом XML, если все функции не находятся внутри параметра success. Любые советы, или мне просто нужно поместить все мои функции в функцию success? Есть ли лучший способ сделать то, что я описываю, чем использовать $.ajax()

Ответы [ 3 ]

1 голос
/ 21 октября 2010

Функции не обязательно должны быть в функции успеха, чтобы использовать ее, но переменная xml существует только внутри области действия функций успеха, вам нужно будет установить для нее другую переменную.

Не работает

$.ajax( 
  url: "someUrl", 
  type: "GET", 
  dataType:"xml", 
  success: function(xml){ //some code },
  error : function(){ //some code}
});

function parse() {
  //xml processing code
}

Работает

var myXML;

$.ajax( 
  url: "someUrl", 
  type: "GET", 
  dataType:"xml", 
  success: function(xml){ 
    myXML = xml;
    //some code 
  },
  error : function(){ //some code}
});

function parse() {
  //myXML processing code
}

Также, если вы вызовете parse до успешного завершения вызова AJAX, тогда переменная myXML все равно будетноль.Всегда могу выполнить проверку.

function parse() {
  if (myXML) {
    //myXML processing code
  } else {
    //ajax not completed successfully yet
  }
}
1 голос
/ 21 октября 2010

Вы также можете сделать это так, что не требует глобальных переменных:

$.ajax({ 
    url: "someUrl", 
    type: "GET",
    dataType:"xml", 
    success: function(xml){
        $("#somebutton").bind("click",{xmlData:xml}, buttonClick);
    },
    error : function(){ /*some code*/ }
});

function buttonClick(event) {
    var xml = event.data.xmlData;
    //function that interacts with XML
}
1 голос
/ 21 октября 2010

функция успеха - это закрытие, которое выполняется, когда ответ возвращается с сервера.Переменная xml действительна только в рамках функции.Что вы МОЖЕТЕ сделать, так это несколько вещей:

  1. поместите ваши обработчики в функцию успеха
  2. создайте переменную OUTSIDE вызова ajax и в функции успеха присвойте значение XMLк этой переменной

так:

var xmlObj = "";
$.ajax({
  success:function(xml) {
    xmlObj = xml;
  }
});

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