2015-11-01 76 views
3

我有一個div通過ajax請求填充。 在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不同的文件中,並在最後的body標籤之前包含它。理想情況下,您應該使用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

+0

所以我會把var headid等放在第二部分的頂部?我最終把JavaScript放在了原來不工作的地方,因爲它試圖綁定到尚未創建的元素。 –

+0

不,您將不得不將第二部分的JavaScript去掉,放入它自己的文件中,然後在您拉動動態內容之後將片段添加到第一部分。即在$('#resultstable')。html(returnData)之後 – geoidesic