簡體   English   中英

Ajax Post請求不起作用

[英]Ajax Post request not working

您好,我已經使用嘗試的ajax方法創建了用於登錄的腳本,但這對我不起作用,請您告訴我為什么我無法使用此方法,但操作不成功

function login() {
var username = document.getElementById('username').value;
var pass     = document.getElementById('pass').value;

if(username == '' && pass == '') {
    alert('Fields could not be left empty');
} else {
    $.ajax({
        type     : "POST",
        url      : "includes/register.php",
        data     : "command=login&username="+username+"&password="+pass,
        datatype : "json",
        success  :  function(data) {
            if (data.status == 200) {
                alert('Successfull');
                var return_data = data.responseText;
                document.getElementById('messagearea').innerHTML = return_data;
            } else {
                alert('Unsuccessful');
            }
        }
    });
}
}

它應該成功運行警報,但是我收到警報(“不成功”),這意味着狀態不等於200,任何人都可以幫我解決這個問題

這是我的PHP代碼

if(isset($_POST['command']) && $_POST['command'] == 'login') {
    $username = $_POST['username'];
    $pass     = $_POST['pass'];
    $password = md5($pass);

    $check  = mysqli_query($connection, "SELECT * FROM users WHERE username = '$username'");
    $result = mysqli_num_rows($check);
    if($result != 1) {
        echo "<div class='message'>Response Successful</div>";
    } else {
        echo "<div class='message'>Username/Password did not matched</div>";
    }
}

datatype T應該為大寫,

$.ajax({
      type: "POST",
      url: "includes/register.php",
      data: "command=login&username=" + username + "&password=" + pass,
      dataType: "json",

根據服務器代碼,您的數據應如下所示

data: "command=login&username=" + username + "&pass=" + pass,

像這樣更改成功處理程序中的代碼,

document.getElementById('messagearea').innerHTML = data;

如果要檢查xhr請求狀態,則應在success function使用3參數。

success  :  function(data,text,xhr) {
            if (xhr.status == 200) {
                alert('Successfull');
                var return_data = data;
                document.getElementById('messagearea').innerHTML = return_data;
            } else {
                alert('Unsuccessful');
            }
        }

對於dataType:“ json”

if(isset($_POST['command']) && $_POST['command'] == 'login') {
    $username = $_POST['username'];
    $pass     = $_POST['pass'];
    $password = md5($pass);

    $check  = mysqli_query($connection, "SELECT * FROM users WHERE username = '$username'");
    $result = mysqli_num_rows($check);
    if($result != 1) {
        echo json_encode("<div class='message'>Response Successful</div>");
    } else {
        echo json_encode("<div class='message'>Username/Password did not matched</div>");
    }
}

您可以嘗試以下解決方案:

$.ajax({
    type: "POST",
    url: "includes/register.php",
    data: {command: "login", username: username, password: pwd},
    dataType: "json",

不要在腳本jQuery中使用“傳遞”,因為有時它不能正常工作。

再見! :D

您需要在ajax成功函數中添加兩個以上的對象,這將幫助您獲取請求的更多信息。

$.ajax({
    type     : "POST",
    url      : "register.php",
    data     : "command=login&username="+username+"&password="+pass,
    datatype : "json",
    success  :  function(data,xhr,req) {
        if (req.status == 200) {
            alert('Successfull');
            var return_data = data.responseText;
            document.getElementById('messagearea').innerHTML = return_data;
        } else {
            alert('Unsuccessful');
        }
    }
});

另外,您還需要將返回數據編碼為JSON,以便您的請求返回類型與JSON匹配。 如果通過開發人員工具baar仔細查看ajax請求,您會發現還有兩個對象返回,其中您的請求包含不同的內容。

  1. 包含數據
  2. 包含請求成功或失敗。
  3. 在數組中包含不同的對象

暫無
暫無

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

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