簡體   English   中英

Ajax沒有在由ajax填充的div中觸發

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM