这是我的ajax代码。
我在代码中看不到任何错误,但AJAX不起作用。
它不会从该页面返回任何内容......
function addCash(){
var cash =$('#cash_amount').val();
var date =$('#cash_date').val();
var debiter =$('#debiter').val();
if(cash == '' || date =='' ){
alert("Please Fill All Fields");
}
else{
$.ajax({
type: 'POST',
dataType:'JSON',
url: 'getCustomers.php',
data: 'type=cash_received&cash='+cash+'&date='+date+'& debiter='+debiter,
success:function(data){
console.log(data);
alert("Cash Added Successfully");
}
});
}
}
PHP代码“getCustomers.php”...在使用ajax的函数内是一个问题?
$cash= $_REQUEST['cash'];
$date= $_REQUEST['date'];
$debiter= $_REQUEST['debiter'];
$query="INSERT INTO `received_payment`(`debiter`, `amount`, `date`) VALUES ('".$debiter."', '".$cash."', '".$date."')";
$result = $mysqli->query($query) or ($error=$mysqli->error.LINE);
$arr = array();
if(!$result){
$arr['result'] = isset($error) ? $error : 'error';
}
else{
$arr['result'] ="ok";
}
$json_response = json_encode($arr);
ob_clean();
echo $json_response;`
答案 0 :(得分:1)
因为,如果查询失败,您正在使用die
anf,那么您的脚本将会死亡,因此不会做出任何响应。所以改变以下行,
$result = $mysqli->query($query) or die($mysqli->error.__LINE__);
到
$result = $mysqli->query($query) or ($error=$mysqli->error.__LINE__);
并且您可以在响应中返回此错误,例如
if(!$result){
$arr['result'] = isset($error) ? $error : 'error';
}
同样在您的插入查询中,字段及其值不匹配,您应该使用它,如
$query="INSERT INTO `received_payment` (`debiter`, `amount`, `date`)
VALUES ('".$debiter."', ".$cash."', '".$date."')";
尝试从AJAX传递数据(在数据字符串中的debiter键之前有空格),例如
data: {type:'cash_received',cash:cash,date:date,debiter:debiter},
答案 1 :(得分:0)
INSERT查询中的额外逗号。
$query="INSERT INTO `received_payment`(`debiter`, `amount`, `date`,) VALUES ('".$cash."', '".$date."', '".$debiter."')";
更改为:
$query="INSERT INTO `received_payment`(`debiter`, `amount`, `date`) VALUES ('".$cash."', '".$date."', '".$debiter."')";
它实际上是error
,但是由于您提供了die()
,因此代码将退出。所以你没有从Server获得任何东西。
答案 2 :(得分:0)
在AJAX请求中,您提到只接受JSON数据内容。所以在某些情况下,如果PHP错误打开,可能会发生服务器返回带有警告和错误的响应。
因此,在json格式的echo响应之前的服务器端PHP脚本中,您可以使用ob_clean()
来刷新由错误或警告发送的所有意外输出。
$json_response = json_encode($arr);
ob_clean();
echo $json_response;
答案 3 :(得分:0)
请删除行尾的引号
echo $json_response;`