2015-06-21 54 views
0

我是Ajax新手,希望有人能帮助我解决这个问题。Ajax/jQuery:如何与用户沟通Ajax调用错误

我在jQuery中的onclick事件中使用下面的Ajax调用,以便将数据传递给PHP文件,该文件将其插入到MySQL数据库中。 在PHP文件中,根据SQL INSERT的结果,我回显以下内容之一:"record already exists", "update successful", "update failed"

到目前为止,一切都按预期工作,但我无法找到一种方式来告诉用户。 为了更新用户,我想提醒或向他们展示PHP在这里返回的内容,例如, “错误:记录已存在”。

我检查了几个网站,但找不到正确的方法,下面的不起作用。
有人可以帮助我,也提供一个简短的解释?

我的Ajax调用(jQuery中):

$.ajax({ 
    url: "ajax.php", 
    type: "post", 
    cache: "false", 
    data: { 
     email: email, 
     dob: dob 
    }, 
    success: function(data) { 
     // update successful 
     console.log(data); 
    }, 
    error: function(){ 
     // update failed 
     alert('Error: ' + data); // here I would like to communicate back to the user 
    } 
}); 

更新: 这是我的PHP的相关部分相呼应的结果:

$conn = new mysqli($servername, $username, $password, $dbname); 
$conn->set_charset("utf8"); 
if($conn->connect_error){ 
    die("Connection failed: " . $conn->connect_error); 
} 
$email = $_POST["email"]; 
$dob = $_POST["dob"]; 
$sql = "SELECT email FROM Users WHERE email = '" . $email . "'"; 
$query = $conn->query($sql); 
if(mysqli_num_rows($query) > 0){ 
    echo "record already exists"; 
}else{ 
    $sql = "INSERT INTO Users (email, dob) VALUES ('" . $email . "', '" . $dob . "')"; 
    if ($conn->query($sql)) { 
     echo 'update successful'; 
    }else{ 
     echo 'update failed'; 
    }; 
} 

提前感谢, Mike

+1

alert()不会将此信息传递给用户吗?你也可以把信息放在某个页面元素中,这通常比'alert()'更好。 – David

+2

添加一个'alert()'或代码在AJAX的'success'部分向用户显示消息。 – Varun

+0

@All:谢谢你。是的,一个警报会做,我只是不知道我可以在这里警告什么,以及如何在Ajax调用中实现这一点。 – keewee279

回答

1

正如@Var所示un,请尝试在success内加入alert回调

$.ajax({ 
     url: "ajax.php", 
     type: "post", 
     cache: "false", 
     data: { 
      email: email, 
      dob: dob 
     }, 
     success: function(data) { 
      // here I would like to communicate back to the user 
      // update successful 
      alert(data); 
     }, 
     error: function(jqxhr, textStatus, errorThrown){ 
      // update failed 
      alert('Error: ' + errorThrown); 
     } 
    }); 
+0

非常感谢!我尝试过,但我没有收到警报,例如如果记录已经存在。另外,你能解释一下jqxhr是什么吗? – keewee279

+1

@ keewee279 _“非常感谢!我试过但我没有得到警报,例如,如果记录已经存在。”_既不是'成功'也不是'错误''警报'被称为?请参阅http://api.jquery.com/jQuery.ajax/#jqXHR – guest271314

+0

感谢您的操作,如果发生错误但成功部分(插入)正常工作,则完全没有提示。我在我的文章中加入了相关的PHP部分 - 希望这有助于。我正在使用最新版本的Chrome。 – keewee279