解释
我正在发送一个POST,在PHP中我正在检查数据库中是否已存在用户名。 如果是,请返回错误。
但问题是,我不能使用相同的function(data)
,因为我希望错误位于另一个div中。
$.post("events.php?action=send", { data : $(this).serialize() }, function(data)
{
$("#processing").html('');
$("#comments").html(data);
});
问题
我不能在匿名函数中有两个变量,比如函数(数据,错误),那么我应该如何获取PHP打印的'错误',例如'用户已存在于数据库中',然后将其放入#errors div?
答案 0 :(得分: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);
}
}
答案 1 :(得分: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);
});
答案 2 :(得分: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!");