簡體   English   中英

$ .ajax發布請求未發送POST數據

[英]$.ajax Post Request not sending POST data

我試圖通過使用ajax來處理向服務器返回請求和形成請求的方式來簡化我的登錄系統。 我想將表單數據發布到PHP頁面,然后如果未傳遞正確的參數,則返回true / false和'Not Enough Data'。

我的問題是我的AJAX請求沒有發送我要發送的數據。

這是我的JavaScript函數:

function confirm_login()
{
   val_UName = document.login_form.username.value;
   val_Pwd = document.login_form.password.value;

   var result = null;
   var scriptUrl = "login_confirm.php";
   $.ajax({
     url: scriptUrl,
     type: 'post',
     data: ({username : val_UName, password : val_Pwd}),
     dataType: 'html',
     async: false,
     success: function(data) {
         result = data;
     }
   });
   result = result.split('|');
   if(result[1] == 'true')
     window.location = "index.php";
   else
     alert('Could not log you in!\n\n'+result[0]);
}

在表單上的“提交”按鈕的onclick事件中調用此函數。 現在,我使用了Chrome中的調試工具,並且知道val_UName和val_Pwd正在獲取表單值。 因此,這絕對是此處和login_confirm.php之間的故障。

為了完整起見,這是login_confirm.php中發生的事情(我省略了連接到數據庫並關閉連接的行):

$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);

if($username == '' || $password == '')
      echo 'Not Enough Data|';

$login_query = "SELECT * FROM users WHERE u_name = '$username' AND pwd = '$password'";
$result = mysql_query($login_query);
$result_rows = mysql_num_rows($result);

if($result_rows > 0)
{
   session_start();
   $row = mysql_fetch_assoc($result);
   $_SESSION['loggedin'] = true;
   $_SESSION['uname'] = $row['u_name'];
   $_SESSION['uID'] = $row['pkid'];
   $_SESSION['email'] = $row['email'];
   $_SESSION['roleID'] = $row['fk_roleid'];
   echo 'true';
}
else
{
   echo 'false';
}

有人知道這里發生了什么嗎,或者以前看過類似的東西?

PS。 我什至嘗試更改為使用GET,但這仍然行不通...

   result = result.split('|');
   if(result[1] == 'true')
     window.location = "index.php";
   else
     alert('Could not log you in!\n\n'+result[0]);

在回調返回之前運行。

嘗試將該邏輯放入成功回調中,或使用該邏輯定義成功函數。

Ajax請求下的代碼在執行之前不會等待ajax請求完成。 因此,我認為您的ajax請求正在運行,但是數據沒有任何反應,因為該代碼段已被執行。

我的建議是:

function confirm_login()
{
   val_UName = document.login_form.username.value;
   val_Pwd = document.login_form.password.value;

   var scriptUrl = "login_confirm.php";
   $.ajax({
     url: scriptUrl,
     type: 'post',
     data: ({username : val_UName, password : val_Pwd}),
     dataType: 'html',
     async: false,
     success: function(data) {
         runCode(data);
     }
   });

   function runCode(var result){
      result = result.split('|');
      if(result[1] == 'true')
        window.location = "index.php";
      else
        alert('Could not log you in!\n\n'+result[0]);
      }
   }
}

編輯:函數不應該在其他函數中,但是我認為您可以自己修復。

不要將數據包裝在括號中。 僅{}就足夠了。

暫無
暫無

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

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