Php ajax未将序列化数据发布到URL
成功函数中的警报值正确。它们是:Php ajax未将序列化数据发布到URL,php,jquery,ajax,Php,Jquery,Ajax,成功函数中的警报值正确。它们是: serviceID=123&acceptAgreement=on 接受协议是一个输入复选框 数据库文件未被更新。我尝试从ajax URL文件中使用var_dump($_POST),但什么也没发生。我认为这不是“查找”驻留在主目录子目录中的URL。 我的js文件: $("#frmServiceAgreement").submit(function(event){ var values = $(this).serialize();
serviceID=123&acceptAgreement=on
接受协议是一个输入复选框
数据库文件未被更新。我尝试从ajax URL文件中使用var_dump($_POST),但什么也没发生。我认为这不是“查找”驻留在主目录子目录中的URL。
我的js文件:
$("#frmServiceAgreement").submit(function(event){
var values = $(this).serialize();
if($("input[name^='acceptAgreement']").is(":checked")) {
$.ajax({
url: "/admin/service.php",
type: "post",
data: values,
success: function(result){
window.alert(values);
},
error:function(){
alert("failed");
console.log("ooops!");
}
});//end ajax
} else {
$(".popup").fadeIn('slow');
}
event.preventDefault();
});
我的URL文件是admin/service.php子目录中的service.php(注意:可能我的if语句需要更改,因为我的AcceptationAgreement的警报值不是1,这是我要存储在db的tinyint列中的值
<?php
include('../xxx/functions.php');
$serviceID = protect($db,$_POST['serviceID']);
$acceptAgreement = protect($db,$_POST['acceptAgreement']);
if($acceptAgreement==1){
$sql = $db->query("UPDATE services SET serviceAgreement=1 WHERE id=$serviceID");
} else {
$sql = $db->query("UPDATE services SET serviceAgreement=0 WHERE id=$serviceID");
}
?>
当我的输入框被选中(is:checked was true)时,ajax将“on”作为变量的值发布…而不是我最终希望存储在tinyINT列中的值1…1为true或0为false。一旦我在ajax URL中添加了一条if语句,检查发布的值是否为“on”,然后我执行了以下更新语句
$sql = $db->query("UPDATE services SET serviceAgreement='1' WHERE id=$serviceID");
即使您在
protect()
函数中隐藏内容,您的脚本也会被广泛使用。即使在MYSQLI\uquot>或PDO
API'中使用,因为您的窗口.alert(values);
实际上正在触发(如您所声称的),那么ajax也会命中一个有效的url(否则会执行错误回调)但是你说数据库没有更新?但是你有一个if/else,其中两个动作都是更新…所以我对你的问题感到困惑。测试->query()
?@riggsfully我的保护功能使用strip\u标记和mysqli\u real\u escape\u字符串…这还不够吗?当你说“我从ajax URL文件中尝试了var_dump($\u POST),但什么都没有发生。”…您检查了哪些步骤以确认“什么都没有发生”?您在浏览器开发工具的“网络”选项卡中检查了来自ajax调用的原始响应吗?它是NULL
值还是array(0){}
?