2011-04-09 89 views
1

我在填寫表單和按提交以將我的信息發送到數據庫時遇到問題。問題是,即使我使用AJAX保留在同一頁面上並在「show_label」中收到回覆,我的頁面也會刷新。使用AJAX獲取響應 - 但頁面仍在刷新

我已經測試過是否通過更改show_label來調用addCustomerFunc,它確實發生了變化!但仍會刷新,並且在刷新後我會丟失信息。我希望如果有人能夠抓住我的錯誤。

這是我customer.php

<script type="text/javascript"> 

function addCustomerFunc(add_LN,add_FN,add_PN,add_DOB) 
{ 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("show_label").innerHTML=xmlhttp.responseText; 
    } 
    } 

xmlhttp.open("POST","addCustomer.php",true); 
xmlhttp.send("add_LN="+add_LN+"&add_FN="+add_FN+"&add_PN="+add_PN+"&add_DOB="+add_DOB); 
} 
</script> 

    <p>Add New Customer:</p> 
    <div align="center"> 
     <table width="337" border="1"> 
     <tr> 
      <td width="154"><p>Last Name:</p> 
      <p>First Name:</p> 
      <p>Phone Number:</p> 
      <p>Date of Birth:</p> 
      <p>&nbsp;</p></td> 
      <td width="167"><p align="center"> 
      <form> 
       <input type="text" name="add_LN" id="add_LN" /> 
       <br/><br/> 
       <input type="text" name="add_FN" id="add_FN" /> 
       <br /><br /> 
       <input type="text" name="add_PN" id="add_PN" /> 
       <br /><br /> 
       <input type="text" name="add_DOB" id="add_DOB" /> 
       <br /><br /> 
       <input type="submit" name="add_Customer" id="New_Customer_Form" value="Add Customer" onClick="addCustomerFunc(add_LN, add_FN, add_PN, add_DOB)"/> 
      </form> 
      <div id="show_label"/> 
      </p> 
      </td> 
     </tr> 
     </table> 
     </div> 

addCustomer.php

<?php 
$username="****"; 
$password="****"; 
$database="****"; 

$lastName=$_POST['add_LN']; 
$firstName=$_POST['add_FN']; 
$phone=$_POST['add_PN']; 
$dob=$_POST['add_DOB']; 
//$membership==$_POST['membership']; 

mysql_connect("******",$username,$password); 

@mysql_select_db($database) or die("Unable to select database"); 


$query = "INSERT INTO customer (last_name, first_name, phone_no, date_of_birth, membership) VALUES ('$lastName', '$firstName', '$phone', '$dob', 'T')"; 

if (mysql_query($query)){ 
    echo "Thanks"; 
} else 
{ 
    echo "Failed to insert customer into database"; 
} 

mysql_close(); 

?>

而且,我是不是正確地傳遞變量addCustomerFunc? 我是否正確使用「發佈」?

謝謝!

編輯:我現在有與傳遞變量的問題,因爲它說: 未定義指數:add_LN在C:\用戶\ EJ \桌面\ cpsc471 \演示\ addCustomer.php 它增加了空白到我的數據庫,但。

回答

2

由於您正在使用表單,因此您需要確保在捕獲submit事件之前允許它繼續並刷新頁面。

這應該可以做到。 (注意return false

<input type="submit" name="add_Customer" id="New_Customer_Form" value="Add Customer" onClick="addCustomerFunc(add_LN, add_FN, add_PN, add_DOB); return false;"/> 
+0

謝謝! :D它保持在同一頁面! ...但現在即時通訊有另一個問題: 未定義的索引:add_LN在C:\ Users \ ej \ Desktop \ cpsc471 \ presentation \ addCustomer.php 此外,它會將空白元素添加到我的數據庫,即使我填寫字段形式。 我是否應該爲此創建一個新問題,因爲如果我將您的答案標記爲正確的人會在此後忽略此問題? – 2011-04-09 17:19:09

+0

刪除'未定義索引'如果php.ini文件更改'ERROR_REPORTING' – John 2011-04-09 18:29:11

+0

未定義索引是警告;這在特定情況下,這意味着姓氏字段爲空。您可以使用isset()函數在使用之前檢查索引是否存在,或者像大多數人一樣檢查,並忽略該錯誤,因爲它很小(請參閱ERROR_REPORTING或ERROR_LEVEL)。當然,如果需要姓氏,您需要在那裏進行一些數據驗證(即,檢查姓氏字段是否爲空),然後再將任何內容放入數據庫。 – Eric 2011-04-09 18:30:10

1

更改您的按鈕,從類型:

submitbutton

這樣,你留1頁上,並且刷新將會消失:-)

0

爲什麼不使用jQuery $.post()$.get()

順便說一句,使用方法:的

<input type="button" name="add_Customer" id="New_Customer_Form" value="Add Customer" onClick="addCustomerFunc(add_LN, add_FN, add_PN, add_DOB)"/> 

代替:

<input type="submit" name="add_Customer" id="New_Customer_Form" value="Add Customer" onClick="addCustomerFunc(add_LN, add_FN, add_PN, add_DOB)"/>