2016-02-03 57 views
1

我使用普通的JavaScript進行Ajax請求。當通過post方法發送數據的時候拋出一個錯誤。無法獲取POST數據在php'未定義索引'錯誤

的index.php

<html> 

    <header> 

     <script> 
      function submit(){ 

       var userName = document.getElementById("username").value; 
       var passWord = document.getElementById("password").value; 


       var data = "username=" + userName + "&password=" + passWord; 

       //send ajax request 
       var xmlHttp = new XMLHttpRequest(); 
       xmlHttp.onreadystatechange = function() 
       { 
        if(xmlHttp.readyState == 4 && xmlHttp.status == 200) 
        { 
         console.log(xmlHttp.responseText); 
        } 
       } 
       xmlHttp.open("post", "validateuser.php"); 
       xmlHttp.send(data); 
      } 
     </script> 

    </header> 

    <body> 

      <label>User Name : </label> 
      <input type="text" name="username" id="username"/> 

      <label>Password : </label> 
      <input type="text" name="password" id="password"/> 

      <button onClick="submit()"> Login</button> 

    </body> 

</html> 

validateuser.php

<?php 

    $userName = $_POST["username"]; 
    $password = $_POST["password"]; 

echo $userName . $password; 
+0

瀏覽器的控制檯日誌中的消息是什麼? –

+0

您的瀏覽器控制檯說什麼?它是否顯示它已成功發佈到'validateuser.php'?它是否顯示發佈的數據值? – Sean

+0

其輸出php錯誤。 sayin'注意:未定義的索引:用戶名在C:\ wamp \ www \ redstone \ formsapp \ validateuser.php上線'和'注意:未定義的索引:C:\ wamp \ www \ redstone \ formsapp中的密碼\ validateuser.php on line ' – azad

回答

4

在Javascript中阿賈克斯後,你需要添加如下代碼中的行:

xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 

您可以檢查文檔和示例W3schoolsdeveloper mozilla

而對於更可靠的代碼只需添加下面一行到您的PHP代碼

if(isset($_POST['username']) && isset($_POST['password'])){ 
    //your code 
} 
+0

使用jquery的'$ .ajax()'這麼久,我忘記了這一點。好的趕上! +1(儘管我會建議鏈接到https://developer.mozilla.org/en-US/docs/AJAX/Getting_Started而不是w3schools) – Sean

1

你需要設置你xmlHttp對象的頭。在xmlHttp.send(data);行之前添加以下行:

xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");