Ajax没有在由ajax填充的div中触发

时间:2015-11-01 09:56:16

标签: javascript php jquery 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> 

1 个答案:

答案 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