Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php ajax未将序列化数据发布到URL_Php_Jquery_Ajax - Fatal编程技术网

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){}