2017-03-17 50 views
1

我正在使用ajax插入数据到MySQL数据库与PHP。一旦数据成功插入到数据库中,我想使用条件触发警报。为什么我的jQuery条件不起作用?

我想不通为什么我的情况在jquery中无法正常工作。事情的php方面工作正常,并返回我可以在alert()中看到的'成功'响应,但不会在我使用该条件时看到。 希望有人能告诉我我错了什么,谢谢。

jQuery的

submitHandler: function (form) { 

var formdata = $("#edit_post").serialize(); 
    $.post('edit_upload.php', formdata, 
      function(data){ 

      if(data =="success"){ //alert if records inserted 
      alert(data); 
    } 
}); 
return false; 
} 

edit_upload.php

//Update Database 
$stmt = $db_conx->prepare('UPDATE tbl_uploads SET title=?, detail=? WHERE id=?'); 
$stmt->bind_param('sss',$title,$detail,$id); 
$stmt->execute(); 

if ($stmt->execute()) { //true 
echo 
     'success'; 
} 

else{ echo "error"; } 
+1

尝试'if(data.trim()==“success”)',或者更好的方法是通过JSON返回一个布尔值 –

+2

使用内置在浏览器中的调试器停止'if(data ==“success” )'行,查看'data'变量的内容,并找出。可能它在字符串的一端或两端都有空格。 –

+0

打开开发人员控制台(通常为F12),并检查网络流量以获取响应的实际内容,以确定实际发生的情况。 – apokryfos

回答

2

这是最有可能的,这个问题是由一些空白造成被添加到返回的字符串。您可以通过使用trim()删除此:

$.post('edit_upload.php', formdata, function(data) { 
    if (data.trim() == 'success') { 
    console.log(data); 
    } 
}); 

你应该注意到,虽然,这将是更好的做法,远不易出错,通过JSON返回一个布尔值,像这样:

$stmt = $db_conx->prepare('UPDATE tbl_uploads SET title=?, detail=? WHERE id=?'); 
$stmt->bind_param('sss', $title, $detail, $id); 
echo json_encode(array('success' => $stmt->execute()); 
$.post('edit_upload.php', formdata, function(data) { 
    if (data.success) { 
    console.log(data); 
    } 
}); 
+0

修剪了伎俩。谢谢。 – JulianJ