2013-02-27 128 views
0

的數據目前,我有以下代碼:不能返回後Ajax請求

function Parse_Error(ErrMsg) { 

$.post("ajax/errormsg.php", { 
    errmsg: ErrMsg} 
    , function(data) { 
    alert (data); 
       return (data); 
}); 
} 

警報會告訴我正確的消息,但功能不返回的消息。該函數保持返回「未定義」,但警報正常工作。我試着添加以下內容:

var tmp = data; 
return tmp; 

沒有成功..我哪裏出錯了?

回答

0

問題是沒有返回Parse_Error函數的返回語句。它返回的是你聲明的所謂匿名函數(function(data){...}),它將數據提供給JQuery,它將有效地忽略它。相反,你需要做這樣的事情:

// your code that does the query 
do_error_query('The Error Message'); 

function do_error_query(ErrMsg) { 
    $.post("ajax/errormsg.php", {errmsg: ErrMsg} , function(data){ 

     alert(data); 
     // here you need to call a function of yours that receives the data. 
     // executing a return statement will return data to jquery, not to the calling 
     // code of do_error_query(). 
     your_function(data); 

    }); 
} 

function your_function(data){ 
    // process the data here 
} 

的問題是,調用do_error_query()完成從PHP頁面的搜索結果,甚至纔回來。所以不可能返回結果。換句話說,在do_error_query()返回後,your_function(data)會被調用。我希望這是有道理的。

實際上,do_error_query()只是設置一個事件處理程序。它不能返回值,因爲事件尚未完成。這就是事件處理程序your_function(data)的用途。它處理事件,從PHP頁面返回數據。雖然活動尚未完成,但do_error_query()將很早就完成。

+0

(我不在家測試),但從理論上講,如果我沒有正常使用, – 2013-02-27 17:45:08

+0

嗯..這會讓我的問題複雜化!由於我在我的Web應用程序上有多種語言,因此,當我遇到客戶端錯誤消息時,我會調用相同的PHP腳本並返回Correcte錯誤消息。 EX:在腳本中,我將發送以下字符串到php腳本「{Client_Not_Found}」,腳本將返回「在數據庫中找不到請求的客戶端」。當然,如果用戶是Speack法語或西班牙語,文本會以他的語言回來。我目前使用相同的代碼,所有我的腳本,並希望將它分組在一個函數...任何好主意?謝謝! – 2013-02-27 17:52:32

+0

很自然,有些東西會被複制到客戶端和服務器上,解決方案是個人喜好之一,也取決於應用程序的大小,部件是否將被重用等等。我的選擇,如果支持的話只有幾種語言和一些錯誤消息,我會硬編碼它們,在必要時複製。但是如果你已經開發了一個結構來迎合許多字符串,甚至不同語言的文章,那麼你可以用它來代替。 – Jodes 2013-02-27 20:50:31