我有一个通过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>
答案 0 :(得分:0)
我知道它与您的问题无关,但您不应该使用PHP短标记表示法,它已被弃用:https://softwareengineering.stackexchange.com/questions/151661/is-it-bad-practice-to-use-tag-in-php
你的第一个代码块是带有内联Javascript的HTML,这是一种糟糕的做事方式,如果你坚持以这种方式使用Javascript,你将很难调试错误。您应该将您的Javascript放在HTML的单独文件中,并将其包含在最终正文标记之前。理想情况下,您应该使用window.onload(或其他类似的方法,如闭包或jQuery的.ready()方法),以确保只在DOM完全加载后解析DOM遍历脚本的元素。
您的第二个Javascript代码块将永远不会运行,因为当浏览器解析HTML时它不存在。它只是稍后注入但Javascript不能这样工作。你可以动态地注入javascript但不是那样的。你必须做这样的事情:
if(i == 0 || isspace(s[i - 1]))
我从这里开始使用此代码:http://www.hunlock.com/blogs/Howto_Dynamically_Insert_Javascript_And_CSS