2012-03-13 3 views
1

Я хочу использовать класс jQuery.post для возврата (не предупреждения) ответа внутри функции.Возврат jQuery Ajax Post

Ниже дается предупреждение с соответствующим значением:

function test_func() { 
    $.post("test.php", { cmd: "testing" }, function (data) { alert(data); }) 
} 

(отображает предупреждение с соответствующим значением)

Я попробовал следующее:

function test_func() { 
    return $.post("test.php", { cmd: "testing" }, function (data) { return data; }) 
} 

(вернулся объект)

function test_func() { 
    var tmp; 
    $.post("test.php", { cmd: "testing" }, function (data) { tmp=data; }) 
    return tmp; 
} 

(возвращаемый неопределенными)

var tmp; 

function setTmp(n) { 
    tmp=n; 
} 

function test_func() { 
    t=$.post("test.php", { cmd: "testing" }, function (data) { setTmp(data); }) 
} 

(возвращается неопределенным)

function test_func() { 
    t=$.post("test.php", { cmd: "testing" }) 
    return t.responseText; 
} 

(вернулся неопределенными)

Так что дело? Как я могу заставить test_func() вернуть текст ответа на данные?

ответ

0

Сделка Ajax является асинхронной один из возможных решений является, чтобы установить его в качестве синхронизации как

$.ajaxSetup({ 
async:false 
}); 

, а затем

function test_func() { 
var temp; 
    t=$.post("test.php", { cmd: "testing" }) 
    return t.responseText; 
} 

Ответ на этот вопрос только, чтобы сделать вашу текущую работу установки еще есть лучше способы борьбы с этим

+0

Удивительно, спасибо за помощь. Это просветление. Реализовано и работает сейчас. – Gaias

1

Будучи асинхронным запросом, вы не сможете получить ответ сразу после вызова функции. Вместо этого function, который вы передаете в $.post, предназначен для обратного вызова, который будет выполнять некоторые действия сразу после завершения ответа. Рассмотрим следующий пример:

function myCallback(response) { 
    // do something with `response`... 
} 

function test_func() { 
    $.post("test.php", { cmd: "testing" }, myCallback) 
} 

Вместо непосредственного возвращения ответа, вы можете вместо этого манипулировать его по мере необходимости в функции myCallback.