2013-05-27 2 views
-1

Im пытается получить простую «строку» из функции обратного вызова, и она остается неопределенной.callback javascript остается undefined

это то, что Im пытается сделать:

У меня есть Ajax называют, и его получение «привет» messege. ->

function Func1(textConent, lineId) { 

var op = "3"; 
var url = "../xxx/xxx.aspx"; 
var myReutn; 

//id, lineId, place, textContent, summaryId 

$.post(url, { url: url, op: op, lineId: lineId, textConent: textConent }, function (e) { 

    myReutn = e; 


}); 

return myReutn; 

}

тогда я пытаюсь стрелять эту функцию:

var e = Func1(myText, lineId); 

, а затем оповещает "е", но его останки "не определено". Почему?

ответ

0

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

0

$.post является асинхронным, а это означает, что ваш призыв к Func1 вернется до того фактический HTTP пост происходит. Как только ваши скрипты будут завершены, и ответ HTTP будет возвращен из сообщения, тогда ваш встроенный обратный вызов будет запущен.

2

Добавляя к другим ответам, может быть хорошей идеей реструктурировать ваш код, чтобы вы могли работать с асинхронным характером JavaScript.

В вашей функции обратного вызова (в приведенном выше коде, где вы назначаете переменную myReutn), вы можете вызвать функцию, которая делает все, что вы хотите сделать, с этим значением вне Func1.