Передача переменной в обратный вызов после Ajax-запроса - PullRequest
0 голосов
/ 05 сентября 2010

Есть ли более элегантный способ передачи переменной после выполнения Ajax-запроса (JS-> PHP), кроме печати результатов?

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

Кроме того, у меня было это случайное пространство, которое было напечатано в одном из моих обратных вызовов Ajax-запросов, и я не мог понять, откуда он пришел. Эта проблема не будет существовать с передачей сериализованных переменных или что-то в этом роде, верно?

Заранее спасибо!

1 Ответ

0 голосов
/ 15 мая 2011

Передайте атрибут в форме {url: "", метод: "", данные: {...}, обратный вызов: function () {}}

В обратном вызове вы можете сделать много вещей, Google "Javascript Closures".

Надеюсь, это поможет.

var ajax=function(){
  try{
    var xml       =new XMLHttpRequest();
    var args      =arguments;
    var context   =this;
    var multipart ="";

    xml.open(args[0].method,args[0].url,true);

    if(args[0].method.search(/post/i)!=-1){
      var boundary=Math.random().toString().substr(2);
      xml.setRequestHeader("content-type","multipart/form-data; charset=utf-8; boundary="+boundary);
      for(var key in args[0].data){
        multipart+="--"+boundary+"\r\ncontent-Disposition: form-data; name="+key+"\r\ncontent-type: application/octet-stream\r\n\r\n"+args[0].data[key]+"\r\n";
      }
      multipart+="--"+boundary+"--\r\n";
    }

    xml.onreadystatechange=function(){
      try{
        if(xml.readyState==4){
          context.txt=xml.responseText;
          context.xml=xml.responseXML;
          args[0].callback();
        }
      }
      catch(e){}
    }

    xml.send(multipart);
  }
  catch(e){}
}

Если вы хотите получить ответ, вы можете использовать это:

var response={}; ajax.call(response,{...args...})

и вы можете получить все данные по response.txt или response.xml.

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