0

解释

我正在发送一个 POST,并且在 PHP 中我正在检查数据库中是否已经存在用户名。如果是,则返回错误。

但问题是,我不能使用相同的function(data),因为我希望错误位于另一个 div 中。

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

问题

我不能在匿名函数中有两个变量,比如函数(数据,错误),那么我应该如何获取打印的“错误”PHP,例如“用户已经存在于数据库中”,然后将其放入#errors div ?

4

3 回答 3

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);
    }

}
于 2013-04-14T16:47:54.560 回答
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);
});
于 2013-04-14T16:45:30.760 回答
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!");
于 2013-04-14T16:52:20.037 回答