首页 文章

jquery ajax帖子不起作用

提问于
浏览
0

我在这个问题上阅读了很多帖子,但我无法解决问题 . 似乎ajax()工作正常,但.php文件无法更新SQL数据库并且没有向ajax()函数返回任何结果 .

这是我的代码:

var datastring=JSON.stringify(utnew)

    $.ajax({    
            type: "POST",
            url: "myulr-php",       
            data: datastring,
            dataType: "json",
            success: function(resto){
                       if (resto=="success"){
                         $("#pop-confermadatiuser").html("OK"); 
                       }else{ 
                         $("#pop-confermadatiuser").html("KO");
                       };
                    }

    });

PHP代码工作,我试过 . 这是代码:

header("Access-Control-Allow-Origin: *");
    $con = mysqli_connect("sql","xxx","xxx","xxx") or die ("could not connect database");

     $ck=1 ;
     if(isset($_POST['id']))
     {
        $id=$_POST['id'];
        $nome=$_POST['nome'];
        $cognome=$_POST['cognome'];
        $matricola=$_POST['matricola'];
        $mail=$_POST['mail'];
        $password=$_POST['password'];
        $ck=2
        $qry="UPDATE user SET nome='".$nome."', cognome='".$cognome."', mail='".$mail."', password='".$password."' where id=".$id." and matricola=".$matricola;

     $q=mysqli_query($con,$qry);
     if($q) {
             echo "success";
     } else {
             echo "error";
     };
      mysqli_close($con);
     };

     if(ck==1){
               echo "error2";
     };

1 回答

  • 0

    jQuery代码将POST数据作为JSON字符串发送,但您的PHP代码正在寻找标准键值对 .

    您可以将Ajax调用更改为以键值格式发送 . 我无法在您的代码中看到 utnew 引用的内容,通常是Javascript对象或使用 $.serialize() 序列化HTML表单的结果:

    $.post("myurl.php", utnew, "json")
      .always(function(response) { console.log(response); }
    

    或者,您可以更改PHP端以期望POST有效内容中的JSON编码字符串,而不是编码的键值对:

    <?php
        ...
        $data = json_decode(file_get_contents('php://input'));
        if (isset($data['id'])) { ... }
    

    无论你选择哪个,你遇到的问题是Ajax调用发送一个JSON编码的字符串作为POST有效负载,但PHP期望 $_POST 中的键值对 .

    jQuery $.ajax"json" 数据类型参数或快捷方法 $.post 告诉jQuery期望返回值的格式,因此您的PHP代码应返回JSON编码的字符串 . 你的PHP代码发送回一个普通的字符串,所以你应该告诉jQuery期望:

    $.post(url, data, "text")

    或让PHP发送回适当的JSON编码对象:

    echo json_encode(["result" => "success"]);

    如果你有PHP错误登录(你应该)到一个文件,你可以使用 error_log 调试你的API endpoints ,即 error_log(print_r($_POST,1)); 会给你一些线索 .

相关问题