Bir değişken görevinden yanıt dönmek için nasıl?

1 Cevap php

edited: This is what i need:

sendpost = function(a,b,c){
    return jQuery.post('inc/operations.php', {a:b}, c, "json");
},

rotate = function(callback){
    //....
    alert(callback);
}

sendpost('operation', 'test', rotate)

old post: i use this function to return the response of post:

$.sendpost = function(){
    return jQuery.post('inc/operations.php', {'operation':'test'}, "json");
},

ben böyle bir şey yapmak istiyorum:

in:

$.another = function(){
  var sendpost = $.sendpost();
  alert(sendpost);
}

ama olsun: [object XMLHttpRequest]

i ile nesneyi yazdırırsanız

jQuery.each(sendpost, function(i, val) {
  $(".displaydetails").append(i + " => " + val + "<br/>");
});

i olsun:

details  abort => function () { x && h.call(x); g("abort"); }
dispatchEvent => function dispatchEvent() { [native code] }
removeEventListener => function removeEventListener() { [native code] }
open => function open() { [native code] }
setRequestHeader => function setRequestHeader() { [native code] }
onreadystatechange => [xpconnect wrapped nsIDOMEventListener]
send => function send() { [native code] }
readyState => 4
status => 200
getResponseHeader => function getResponseHeader() { [native code] }
responseText => mdaaa from php

değişken sadece yanıt dönmek için nasıl?

1 Cevap

Bu, mümkün değildir.

AJAX çağrıları sunucusu bir yanıt gönderir önce kod çalışmaya devam yani, asenkron vardır.

return deyimi çalıştırıldığında sunucudan hiçbir cevap henüz yok.

Bu senkron bir AJAX arama yapmak mümkündür, ancak tamamen tarayıcınız dondurdu ve her ne pahasına kaçınılmalıdır.

Bunun yerine, işlevi sunucunun yanıtını alabilir, ve $.post 's geri çağırma o geri arama arayacak bir geri almak yapmalıdır. (Bu jQuery AJAX fonksiyonları dönüş değerleri nasıl)

EDIT: Örneğin:

$.sendpost = function(callback) {
    return jQuery.post('inc/operations.php', {'operation':'test'}, callback, "json");
};

$.another = function() { 
    $.sendpost(function(response) {
        alert(response);
    });
};