2013-03-20 52 views
0

我想將ajax應用到我的php代碼中。但是,當我點擊按鈕時,我無法得到任何迴應。這意味着我聲明的ajax函數不被稱爲onclick如何在php代碼上應用ajax

<?php 
$s_name= $_POST["submit"]; 

mysql_connect("localhost","root","");//database connection 
mysql_select_db("itcompanylist"); 

$query = "SELECT s_id FROM states WHERE `state_name` = '$s_name'"; 
$result1 = mysql_query($query); 
$row = mysql_fetch_array($result1); 
$result2 = mysql_query("SELECT city_name FROM `city` WHERE s_id ='".$row['s_id']."'"); 

$i = 0; 

echo "<form method='post' name='myForm'><table border='1' ><tr>"; 

while ($row = mysql_fetch_row($result2)){ 
    echo '<td><input type="submit" name="submit" onclick="ajaxFunction()" value="'.$row['0'].'"></td>'; 

    if ($i++ == 2) 
    { 
    echo "</tr><tr>"; 
    $i=0; 
    } 
} 


echo "</tr></table></form>";  
echo "<div id='ajaxDiv'>Your result will display here</div>";  
?> 

Ajax代碼:

<script language="javascript" type="text/javascript"> 
<!-- 
//Browser Support Code 
function ajaxFunction(){ 
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; 
     } 
    } 
} 

ajaxRequest.onreadystatechange = function(){ 
    if(ajaxRequest.readyState == 4){ 
     var ajaxDisplay = document.getElementById('ajaxDiv'); 
     ajaxDisplay.value = ajaxRequest.responseText; 
    } 
} 
var s1 = document.getElementById('submit').value; 

var queryString = "?submit=" + s1 ; 

ajaxRequest.open("GET", "" + 
           queryString, true); 
ajaxRequest.send(null); 
} 
//--> 
</script>  
+2

而'ajaxFunction()'的代碼是...? – SeanWM 2013-03-20 13:32:32

+2

您正在使用[an **過時的**數據庫API](http://stackoverflow.com/q/12859942/19068),並應使用[現代替換](http://php.net/manual/en/ mysqlinfo.api.choosing.php)。你也**易受[SQL注入攻擊](http://bobby-tables.com/)**,現代的API會使[防禦]更容易(http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php)自己從。 – Quentin 2013-03-20 13:35:09

回答

2

你的提交按鈕將提交表單和Ajax請求尚未處理完離開頁面。

將您的事件處理程序綁定到表單的提交事件,並阻止默認操作。

function ajax(event) { 
    // Send Ajax request here 
    event.preventDefault(); 
} 
var frm = document.getElementsByName('myForm')[0]; // Better to use an ID. Don't write HTML 3.2 
frm.addEventListener('submit', ajax); 
+0

哪個想寫在(事件)上的地方? – 2013-03-20 13:41:34

+0

@NikunjJagad - 你可以使用任何你喜歡的變量名,但'event'是一個很好的名字(因爲函數收到的參數是[一個事件對象](http://www.w3.org/TR/DOM-Level- 2,活動/ events.html#活動,活動)) – Quentin 2013-03-20 13:51:06

0

使用onclick =「return ajaxFunction()」和event.preventDefault();以避免默認表單提交。