2011-12-01 86 views
-2

我試圖實現一個AJAX應用程序,用戶輸入用戶的id時,與id相關的所有信息將填充到剩餘的文本字段中。例如,當用戶輸入ID號碼「1234」時,姓氏,名字,最喜歡的顏色和最喜歡的號碼字段會自動填充在該數據庫中爲該ID找到的信息。從那裏用戶將能夠看到與該特定ID相關的所有當前信息並進行更改。200 OK錯誤AJAX - MYSQL請求+「undefined」返回

下面是我的腳本,但是當我運行這個時,所有返回的值都是「undefined」。當我運行通過Firebug的錯誤,一個GET響應即發:響應簡單地寫着:

SELECT *從用戶其中id = \ 「$ ID \」

任何想法可能是錯誤的?

<html> 
    <head> 
    <script type = "text/javascript"> 
     var xhr; 
     if (window.ActiveXObject) 
     { 
      xhr = new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
     else if (window.XMLHttpRequest) 
     { 
      xhr = new XMLHttpRequest(); 
     } 

     function callServer() 
     { 
      // Create the id number 
      var id = document.getElementById("id").value; 

      // Create regular expressions 
      var reg1 = /\d{4}/; 

      // Test the string against the regular expression 
      if (reg1.test(id)) 
      { 
       var idCheck = id; 
      } 
      else 
      { 
       alert ("Invalid id number"); 
       return; 
      } 

     // Build the URL to connect to 
     var url = "(restofurl).../dataExtract.php?idCheck=" +escape(idCheck); 

     // Open a connection to the server 
     xhr.open("GET", url, true); 

     // Setup a function for the server to run when it is done 
     xhr.onreadystatechange = updatePage; 

     // Send the request 
     xhr.send(null); 
    } 

    function updatePage() 
    { 
     if ((xhr.readyState == 4) && (xhr.status == 200)) 
     { 
     var response = xhr.responseText.split(","); 
     var reg3 = /\S+/; 
      if (!reg3.test(document.getElementById("lastname").value)) 
     { 
       document.getElementById("lastname").value = response[1]; 
     } 
      if (!reg3.test(document.getElementById("firstname").value)) 
     { 
       document.getElementById("firstname").value = response[2]; 
     } 
      if (!reg3.test(document.getElementById("color").value)) 
     { 
       document.getElementById("color").value = response[3]; 
     } 
      if (!reg3.test(document.getElementById("number").value)) 
     { 
       document.getElementById("number").value = response[4]; 
     } 
     } 
    } 
</script> 
</head> 
<body> 
    <form method = "POST" action = "<?php echo $_SERVER['PHP_SELF']; ?>"> 
     <p>Update Database:</p> 

     <p>ID:<input type = "id" id="id" name="id" size="20" maxlength="40" onchange = "callServer();" /></p> 
     <p>Update Last Name:<input type = "lastname" id="lastname" name="lastname" size="20" maxlength="40" /></p> 
     <p>Update First Name:<input type = "firstname" id="firstname" name="firstname" size="20" maxlength="40" /></p> 
     <p>Update Favorite Color:<input type = "color" id="color" name="color" size="20" maxlength="40" /></p> 
     <p>Update Favorite Number:<input type = "number" id="number" name="number" size="20" maxlength="40" /></p> 
     <input type="submit" id="submit" name ="submit" value="Update" /><br><br> 


    </form> 
</body> 
</html> 

dataExtract.php

<?php 

// Connect to the MySQL database 
$con = mysql_connect("server","user","password"); 

if (!$con) 
{ 
    die('Could not connect: ' . mysql_error()); 
} 

mysql_select_db("tablename", $con); 

$id = $_GET["id"]; 

$table = "users"; 
$query = 'SELECT * from $table where id = \"$id\"'; 
$result = mysql_query($query) or trigger_error(mysql_error().$query); 

if (empty($result)) 
{ 
    $response = " , , , "; 
} 
else 
{ 
    $row = $result->fetch_row(); 
    $response = $row[1].",".$row[2].",".$row[3].",".$row[4]; 
    echo $response; 
} 


// Close connection to the database 
mysql_close($con); 
?> 
+0

我敢打賭,它不止這些,因爲它肯定會觸發你的'trigger_error()'子句。您是否檢查過Firebug的完整響應? –

回答

2

你在導致在查詢單引號使用$表 '選擇從$表* ......' 正在由MySQL執行。同樣,當您使用單引號指定字符串文字時,您已將反斜槓添加到雙引號中,這是不需要的。