PHP返回jquery / ajax无法正常工作,
在我的编辑功能中显示错误信息但尚未执行成功功能,在我的删除功能中没有显示任何成功执行...
尝试了一切:((显然不是一切......)
有什么想法吗?
currentPage.EditItem = function(id) {
if (confirm('Are you sure you wish to edit?')) {
console.log("DetailPage :: edit");
var itemm = $("#itemm").val();
var amount = $("#amount").val();
var statuss = $("#statuss").val();
var Uid = localStorage.getItem("Uid");
console.log(statuss);
if (itemm == "") {
alert("Please enter item");
} else if (amount == "") {
alert("Please enter amount");
} else if (statuss == "") {
alert("Please enter status");
} else {
$.ajax({
type:'POST',
url:'http://www.mywebsite.com/edit.php',
data:{'Uid':Uid,'itemm':itemm,'amount':amount,'statuss':statuss},
success: function(data) {
alert("Edit item success");
window.location.href = "new_up.html";
},
error: function() {
alert("Edit user failure");
},
});
window.location.href = "new_up.html";
};
};
};
PHP
<?php
// Check connection stuff
$itemm_id = $_POST['Uid'];
$itemm_itemm = $_POST['itemm'];
$itemm_amount = $_POST['amount'];
$itemm_statuss = $_POST['statuss'];
print($itemm_statuss );
$qry = "xxxxxxxxxxx";
if (!mysqli_query($con,$qry))
{
die('Error: ' . mysqli_error($con));
}
echo "success";
mysqli_close($con);
?>
DELETE
currentPage.deleteItem = function(id) {
if (confirm('Are you sure you wish to delete?')) {
var Uid = localStorage.getItem("Uid");
$.ajax({
type:'POST',
url:'http://www.mywersite.com/delete.php',
data:{'Uid':Uid},
success: function(data){
if(data == "YES"){
alert("Item deleted!");
window.location.href = "new_up.html";
}
else{
alert("can't delete the row")
}
},
});
};
};
PHP
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$itemm_id = $_POST['Uid'];
$qry = "DELETE FROM balance1 WHERE id ='$itemm_id'";
if (!mysqli_query($con,$qry))
{
die('Error: ' . mysqli_error($con));
}
echo "YES";
mysqli_close($con);
?>
答案 0 :(得分:1)
您可能希望在发布之前改进代码的缩进。这种方式难以阅读。使用清晰的示例代码发布一个明确的问题将为您提供更多响应。
我没有检查整个代码,但我认为这有助于您找到错误:
只要ajax调用成功将其数据发送到服务器并获得文本回复,就会触发它的成功函数。这意味着当服务器返回SQL错误时也会触发它:此错误消息也是一个回复。
您可能希望在控制台中查看结果以查看正在发生的事情:
success: function(data) {
console.log(data);
},
或者让脚本检查响应以查看预期的字符串是否成功&#39;被返回或其他东西(如SQL错误):
success: function(data) {
if(data == 'success'){
// OK!
}else{
// The server didn't say 'success' so something fishy is going on.
}
},
另外:&#39;成功&#39;将永远与您现在编写代码的方式相呼应。你应该将它放在某个地方,它只会在实际上正常时被触发:
if (mysqli_query($con,$qry)){
echo "success";
}else{
die('Error: ' . mysqli_error($con));
}
答案 1 :(得分:0)
你可以这样做:
if (!mysqli_query($con,$qry)) {
header("HTTP/1.0 404 Not Found");
exit;
}
应该在jQuery调用中触发error:
选项。
你的代码无法工作的原因是因为jQuery的die('Error: ' . mysqli_error($con));
实际上意味着“成功”:服务器返回一些文本作为带有标题200的响应 - jQuery不会解析该文本以查看是否它包含“错误”一词。