簡體   English   中英

jQuery Ajax發布不起作用

[英]jquery ajax post doesn't work

我閱讀了許多有關此問題的文章,但無法解決問題。 似乎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";
     };

jQuery代碼將POST數據作為JSON字符串發送,但是您的PHP代碼正在尋找標准的鍵值對。

您可以將Ajax調用更改為以鍵值格式發送。 我看不到utnew在您的代碼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端點,即error_log(print_r($_POST,1)); 會給你一些線索。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM