2013-04-14 98 views
0

說明jQuery的POST處理錯誤

我發送POST,並在PHP我檢查,如果用戶名在數據庫中已存在。 如果是,則返回錯誤。

但事情是,我不能使用相同的function(data)因爲我想錯誤位於另一個div。

$.post("events.php?action=send", { data : $(this).serialize() }, function(data) 
{ 
    $("#processing").html(''); 
    $("#comments").html(data); 
}); 

問題

我不能在匿名函數的兩個變量,如功能(數據錯誤),那麼我怎麼去取「錯誤」 PHP印刷例如「用戶已在數據庫中存在',然後把它放在#errors的div?

+0

不要使用縮寫,使用'.ajax' – Jon

+0

的區別是什麼? –

+0

什麼jQuery版本?最近版本的工作方式有所變化。 – FakeRainBrigand

回答

2

這要看你如何處理錯誤在PHP代碼。

爲了最終在錯誤處理程序中結束,您需要將HTTP狀態碼設置爲「5XX」。

你可能想要做的是序列化的情況下,用戶已經存在一個錯誤的對象,像你的成功處理程序處理,現在正在做的:

PHP:

header('Cache-Control: no-cache, must-revalidate'); 
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); 
header('Content-type: application/json'); 

$data = array('error' => 'something went wrong'); 
echo json_encode($data); 

JS:

function(data){ 

    if(data && data.error){ 
     //there was an error, handle it here 
     console.log(data.error); 
    } else { 
     //do something else with the user 
     console.log(data); 
    } 

} 
+0

我喜歡這個解決方案!未捕獲的類型錯誤:無法使用'in'運算符搜索1錯誤' –

+0

@JonyKale可能是因爲數據未定義,請嘗試更新後的代碼。 – Johan

+0

Uncaught TypeError:無法使用'in'運算符在heheheh中搜索'錯誤''hehehe'是'data'內部的錯誤。 \t \t \t \t \t如果(在數據數據&& '錯誤')\t \t \t \t \t \t \t \t \t \t { \t \t \t \t \t \t $( 「誤差」)。HTML(數據); \t \t \t \t \t} –

0

在PHP中,你可以返回JSON的錯誤,像print '{"error":'.json_encode($error).'}'然後,在你的js放在所需的div

$.post("events.php?action=send", { data : $(this).serialize() }, function(data) 
{ 
    $("#processing").html(''); 
    $("#comments").html(data); 
    $("#error").append(data.error); 
}); 
0

我建議你作爲一個JSON的返回數據來自你的服務器。如果你這樣做,你可以從$ .parseJSON(data)中獲得一個對象;

// In your php code 
$result = new stdClass(); 
$result->userExists=false; 

echo json_encode($result); 

現在您的匿名函數中:

// Javascript 
data = $.parseJSON(data); 
console.log(data); 

if (data.userExists) alert("User exists!");