2011-05-09 75 views
0

我創建了一個Ajax函數,專門用於讀取來自FORM的輸入,創建一個查詢字符串並將其發送到PHP文件,該文件將數據插入數據庫併發送指示成功或失敗的反饋的過程。Ajax XMLHttpRequest.responseText有條件工作

問題是Ajax XMLHttpRequest.responseText不起作用。 這意味着,最終用戶不會從php文件獲得反饋:如果過程成功或失敗。

奇怪的是,我發現當我在Ajax函數的末尾放置alert()函數時,XMLHttpRequest.responseText神奇地開始工作。正如你可以想象的那樣,每次進程運行時都會彈出一個彈出窗口,這很煩人。

有人可以幫我理解爲什麼會發生這種情況。

// FORM

class Teacher { 

    function AddATeacher() 
    { 


     ## Template for form with image ## 

     echo "<img src='../images/addaTeacher.png' alt='add A teacher icon' align='middle' width='90' height='90' />"; 
     echo " <b>&nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp Add a Teacher </b> <br> <br>"; 



     ## Template for form with image ## 


     echo "<form name ='login' onsubmit='AddATeachers()' method='post'>";   

     echo "First Name: &emsp&emsp&emsp&emsp&emsp <input type='text' size='15' maxlength='15' 
       onclick=this.value='' id='teachers_first_name' 
       value='Teachers First Name' /> <br>"; 

     echo "Surname: &emsp&emsp&emsp&emsp&emsp&emsp<input type='text' size='15' maxlength='15' 
       onclick=this.value='' id='teachers_surname' 
       value='Teachers surname' /> <br>"; 

     echo "Number: &emsp&emsp&emsp&emsp&emsp &emsp <input type='text' size='15' maxlength='15' 
       onclick=this.value='' id='teachers_number' 
       value='Teachers number' /> <br>"; 

     echo "Email address: &emsp&emsp&emsp&emsp<input type='text' size='15' 
       maxlength='25' onclick=this.value='' id='teachers_email' 
       value='Email address' /> <br>"; 

     echo "Password: &emsp &emsp &emsp&emsp&emsp <input type='password' size='15'maxlength='25' 
       id='password' value='' /> <br>"; 

     echo "<hr/>"; 

     echo " 
      Sex: 
      <select value= 'Male' id='sex'> 
      <option> </option> 
      <option>Male</option> 
      <option>Female</option> 
      </select> "; 

     echo " 
     Assigned Class: 
      <select value= 'Choose a class' id='classes'> 
      <option> </option>   
      <option>P1 East</option> 
      <option>P1 West</option> 
      <option>P2 East</option> 
      <option>P2 West</option> 
      <option>p3 East</option> 
      <option>p3 West</option> 
      <option>p4 East</option> 
      <option>p4 West</option> 
      <option>p5 East</option> 
      <option>p5 West</option> 
      <option>p6 East</option> 
      <option>p6 West</option> 
      <option>p7 East</option> 
      <option>p7 West</option> 
      </select>"; 

     echo" 
     <hr/> 
     <input type='submit' value='Submit' /><br />"; 

     echo "</form>"; 

    } 
} 

// AJAX FUNCTION

function AddATeachers(){ 
    var ajaxRequest; // The variable that makes Ajax possible! 

    try{ 
     // Opera 8.0+, Firefox, Safari 
     ajaxRequest = new XMLHttpRequest(); 
    } catch (e){ 
     // Internet Explorer Browsers 
     try{ 
      ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP"); 
     } catch (e) { 
      try{ 
       ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP"); 
      } catch (e){ 
       // Something went wrong 
       alert("Your browser broke!"); 
       return false; 
      } 
     } 
    } 
    // Create a function that will receive data sent from the server 
    ajaxRequest.onreadystatechange = function(){ 
     if(ajaxRequest.readyState == 4){ 
      document.getElementById("Ajax_response").innerHTML = ajaxRequest.responseText; 
     } 
    } 

    //alert ("Above ur variables "); 
    var teachers_first_name = document.getElementById("teachers_first_name").value; 
    //alert ("within ur variables 1111111111 "); 
    var teachers_surname = document.getElementById('teachers_surname').value; 
    var teachers_number = document.getElementById('teachers_number').value; 
    //alert ("within ur variables 222222222 "); 
    var teachers_email = document.getElementById('teachers_email').value; 
    var password = document.getElementById('password').value; 
    //alert ("Email retrieved: " + password + ""); 
    var tClass = document.getElementById('classes').value; 
    var gender = document.getElementById('sex').value;  
    //alert ("Class value: " + tClass + "");  
    //alert ("Exited ur variables "); 

    //alert ("Just before Query String..."); 
    var queryString = "?tFirstName=" + teachers_first_name + "&tSurname=" + teachers_surname + "&tNumber=" + teachers_number + "&tEmail=" + teachers_email + "&tPwd=" + password + "&tSex=" + gender + "&tClass=" + tClass ; 
    //alert ("After Query String..."); 

    ajaxRequest.open("GET","addATeacherInsert.php" + queryString, true); 
    ajaxRequest.send(null); 
    alert ("Process Complete"); 
} 

// addATeacherInsert.php它調用一個類的方法/實例

<?php 
require ("database.php"); 
require ("teacher.class"); 

mysql_connect(HOSTNAME, USERNAME, PASSWORD) or die(mysql_error()); 
//echo "Connected to MySQL<br /> <br />"; 
mysql_select_db(DATABASE) or die(mysql_error()); 
//echo "Connected to Database: " . DATABASE . " <br />"; 

$sql = ("SELECT * FROM Teachers_Table WHERE TFirstName='$_GET[tFirstName]' AND TSurName= '$_GET[tSurname]' "); 
$query = mysql_query($sql); 
$Sample = new Teacher; 
$Sample->AddATeacherInsert(); 

?> 

// METHOD

function AddATeacherInsert() 
    { 


     mysql_connect(HOSTNAME, USERNAME, PASSWORD) or die(mysql_error()); 
     //echo "Connected to MySQL<br /> <br />"; 
     mysql_select_db(DATABASE) or die(mysql_error()); 
     //echo "Connected to Database: " . DATABASE . " <br />"; 

     ##### Insert into Teachers_Table ###### 
     mysql_query("INSERT INTO Teachers_Table 
     (TFirstName, TSurName, TNumber, TAddress, TPwd, TClassAssig, TSex) VALUES 
     ('$_GET[tFirstName]', '$_GET[tSurname]', '$_GET[tNumber]', '$_GET[tEmail]', 
     '$_GET[tPwd]', '$_GET[tClass]', '$_GET[tSex]') ") 

     or die(mysql_error()); 

     ##### Insert into login_details ###### 
     mysql_query("INSERT INTO login_details 
     (email_address, password) VALUES 
     ('$_GET[tEmail]', '$_GET[tPwd]') ") 

     or die(mysql_error()); 

     echo "<br>"; 
     echo "<center> <img src='../images/approved.png' alt='Enroll student icon' align='bottom' width='90' height='90' /> </center>"; 

     echo "<br><center> <b> <font color='blue'>" . $_GET[tFirstName] . " " . $_GET[tSurname] . "</b> has been successfully enrolled...</font></center><br />";  
} 

預先感謝您

回答

0

我沒有太多的工作與MySQL,但除非由MySQL命令拋出的任何錯誤都是PHP錯誤的範圍之內,你可以只解釋ajaxRequest.status。可以找到不同狀態代碼的列表here