[英]Ajax not firing in div populated by ajax
我有一個通過ajax請求填充的div。 div中的一個表單在完成時應該使用相同類型的ajax請求來填充另一個div。 我使用相同的方法來創建兩個,但第二個JavaScript不運行:
第一個(有效):
<div class="content_text" id="searchbysurname">
<p><form name="searchbysurname">
<b>Search by Surname: </b><input class="inline" type="text" name="q">
<input type="submit"></form>
<script>
$('#searchbysurname form').submit(function(){
var data=$(this).serialize();
// post data
$.post('searchbysurname_test.php', data , function(returnData){
$('#resultstable').html( returnData)
})
return false; // stops browser from doing default submit process
});
</script>
<div id="resultstable"></div>
第二個(在resultstable div中)不起作用:
<? require_once("dbcontroller.php");
$db_handle = new DBController();
$q = ($_POST['q']);
$employees=array();
$sql = "SELECT employees.employeeid, employees.firstname, employees.surname FROM employees where UCASE(employees.surname) LIKE UCASE('%".$q."%')";
$employees = $db_handle->runQuery($sql); ?>
<table class="invisible">
<?
if(isset($employees) && !empty($employees)){
foreach($employees as $k=>$v) {
?>
<tr><td><?php echo $employees[$k]["firstname"]; ?> <?php echo $employees[$k]["surname"]; ?> </td>
<td><div id="viewemployeedetails<? echo $employees[$k]["employeeid"]?>">
<form>
<input type="hidden" name="id" value="<? echo $employees[$k]["employeeid"]?>">
<input type="submit" value="View">
</form>
</div></td>
<div id="mainpart"><b></b></div>
<script>
$('viewemployeedetails<? echo $employees[$k]["employeeid"]?> form').submit(function(){
var data=$(this).serialize();
// post data
$.post('viewemployeedetails.php', data , function(returnData){
$('#mainpart').html( returnData)
})
return false; // stops browser from doing default submit process
});
</script>
我知道它與您的問題無關,但您不應該使用PHP短標記符號,它已被棄用: https : //softwareengineering.stackexchange.com/questions/151661/is-it-bad-practice-to-使用標簽式的PHP
你的第一個代碼塊是帶有內聯Javascript的HTML,這是一種糟糕的做事方式,如果你堅持以這種方式使用Javascript,你將很難調試錯誤。 您應該將您的Javascript放在HTML的單獨文件中,並將其包含在最終正文標記之前。 理想情況下,您應該使用window.onload(或其他類似的方法,如閉包或jQuery的.ready()方法)來確保只在DOM完全加載后解析腳本的DOM遍歷元素。
您的第二個Javascript代碼塊將永遠不會運行,因為當瀏覽器解析HTML時它不存在。 它只是稍后注入但Javascript不能這樣工作。 你可以動態注入javascript但不是那樣。 你必須做這樣的事情:
var headID = document.getElementsByTagName("head")[0];
var newScript = document.createElement('script');
newScript.type = 'text/javascript';
newScript.src = 'http://www.somedomain.com/somescript.js';
headID.appendChild(newScript);
我從這里獲取此代碼: http : //www.hunlock.com/blogs/Howto_Dynamically_Insert_Javascript_And_CSS
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.