Javascript PHP/AJAX停止jquery工作?

Javascript PHP/AJAX停止jquery工作?,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,这里有一个问题,当我将jquery作为一个页面查看时,它可以正常工作,但是当我尝试使用PHP include或ajax将该PHP文件包含在另一个页面中时,jquery似乎无法加载 我对所有这些东西都比较陌生,所以很可能我在做一些愚蠢的事情,任何帮助都将不胜感激 HTML代码 函数showUser(str) { 如果(str==“”) { document.getElementById(“txtHint”).innerHTML=“”; 返回; } if(window.XMLHttpRequest

这里有一个问题,当我将jquery作为一个页面查看时,它可以正常工作,但是当我尝试使用PHP include或ajax将该PHP文件包含在另一个页面中时,jquery似乎无法加载

我对所有这些东西都比较陌生,所以很可能我在做一些愚蠢的事情,任何帮助都将不胜感激

HTML代码


函数showUser(str)
{
如果(str==“”)
{
document.getElementById(“txtHint”).innerHTML=“”;
返回;
}
if(window.XMLHttpRequest)
{//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}
其他的
{//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=函数()
{
if(xmlhttp.readyState==4&&xmlhttp.status==200)
{
document.getElementById(“txtHint”).innerHTML=xmlhttp.responseText;
}
}
open(“GET”、“getuser.php?q=“+str,true”);
//open(“GET”,“jquery.php?q=“+str,true”);
xmlhttp.send();
}
选择一个人:
一号
身份证2
身份证3
身份证四号

此处将列出人员信息。
PHP/Jquery


$(文档).ready(函数(){
//调用tablesorter插件
$(“表”).tablesorter({
//按asc顺序在第一列和第三列上排序
排序列表:[[0,0],[2,0]]
}); 
});

您的AJAX请求将被发送到getuser.php,我将假设您的第二个代码块代表了这一点?基本上,您不是调用一些进行处理的PHP代码并向您发送响应,而是实际调用要引导的PHP脚本和HTML页面,然后将其嵌入到现有页面中

我建议采取以下措施:

首先,从getuser.php中删除HTML,以便只剩下php代码

然后,在进行AJAX调用的页面中,作为“success”函数的一部分,包含sorter函数,以便在您得到响应并写出新的HTML之后进行。具有以下效果的事物:

getuser.php:

<?php include "db.php";


$q = intval($_GET['q']);

$result = mysqli_query($db_connection, "SELECT * FROM student WHERE Student_Id = '".$q."' or Student_Id = 7");

echo "<table id=\"myTable\" class=\"tablesorter\"> 
<thead> 
<tr> 
    <th>Student ID</th> 
    <th>B-Code</th> 
    <th>First Name</th> 
    <th>Second Name</th> 
    <th>Email</th> 
</tr> 
</thead> 
<tbody>

";

while($row = mysqli_fetch_array($result)) {

  echo "<tr>";
  echo "<td>" . $row['Student_Id'] . "</td>";
  echo "<td>" . $row['B-code'] . "</td>";
  echo "<td>" . $row['Student_Forename'] . "</td>";
  echo "<td>" . $row['Student_Surename'] . "</td>";
  echo "<td>" . $row['Student_Email'] . "</td>";
  echo "</tr>";

}

echo"</tbody> 
</table> ";



mysqli_close($con);
另外,将必要的CSS和JavaScript包含也移动到调用页面,以便jQuery对象可用,等等。我还建议将该代码更改为使用jQuery构造和函数,而不是原始JavaScript。它将有助于保持代码干净、一致且易于阅读:)


注意:我很快就输入了这个,所以任何人都可以随时给我打电话,纠正我的错误。

我认为问题在于,当您的jQuery脚本启动时,选择器语句的默认功能是select,并在此选择器的当前实例上执行此操作

因此,如果你这样做:

$(document).ready(function() { 
    // call the tablesorter plugin 
    $("table").tablesorter({ 
        // sort on the first column and third column, order asc 
        sortList: [[0,0],[2,0]] 
    }); 
});
这将查找页面上的所有表标记,并对其调用tablesorter。但是,如果向页面添加了其他表标记,或者在页面已经加载时向页面添加了第一个表标记,那么jquery不会调用表分类器,因为它以前在运行
$(“table”)
选择器时不存在表分类器

这没有经过测试,但您可以尝试在每次ajax加载完成后将.tablesorter挂接到$(“table”)选择器上

$( document ).ajaxComplete(function() {
        $("table").tablesorter({ 
                // sort on the first column and third column, order asc 
                sortList: [[0,0],[2,0]] 
        }); 
});
类似的情况是,当您使用以下内容时:

$( "#target" ).click(function() {
  alert( "Handler for .click() called." );
});
.click事件仅绑定到页面首次加载时页面上存在的#目标元素。以后添加到页面中的任何后续#目标元素都不会绑定.click事件

这么说吧。您有header.php,脚本所在的位置。然后是
index.php
,然后是
table.php
。如果在
index.php
中包含
header.php
,则
header.php
中的脚本将影响
index.php
中的元素。但是,如果在
index.php
中也包含
table.php
,则
header.php
中的脚本不会影响
table.php
中的元素,除非使用适当的事件绑定,如下面的
on()
事件。我想

要解决此问题,必须使用.on事件:

$( "#target" ).on( "click", function() {
  alert( $( this ).text() );
});

.on事件将自身绑定到选择器的所有当前和以后的实例,在本例中,选择器是#target。

因此您将包括整个页面、标题、正文和所有内容,进入另一个页面的标题部分?真的不清楚你在另一个页面中包含了什么细节:使用准备好的语句,而不是直接将变量传递到查询中。此外,不要使用“如果您没有将变量替换到字符串中,否则解释器将无缘无故地解析这些字符串。请尝试
if(include('db.php')=='OK'){echo'OK';}
查看PHP是否正确包含。作为警告,请不要污损您的问题并试图破坏其他人的答案:谢谢Ron,恐怕没有运气。我在加载静态PHP页面时也遇到同样的问题,jquery在直接查看页面时运行良好,但当我使用.load或include to loa等方法时运行良好d从另一个页面加载jquery似乎不起作用。即使我将jquery应用于主页。您是否尝试将脚本添加到正在加载的页面底部,以便在加载内容后加载?此外,如果您将脚本包含在正在加载的同一页面上,请确认脚本是否起作用?如果您访问它jquery工作正常吗?另外,在这里检查一下显而易见的问题,但是在调用这些脚本之前,请确保包含jquery。是的,尝试了所有这些:(直接访问该页面时,Jquery工作。当您使用php/ajax从另一个页面加载页面时,Jquery完全停止。我甚至尝试添加一些静态动画Jquery,并且再次仅在直接访问页面时工作。这必须是页面加载的方式。而不是使用
XMLHttpRequest()
您是否考虑过只使用内置jquery ajax:嗨,Ron,很抱歉。这不是我的问题
$( document ).ajaxComplete(function() {
        $("table").tablesorter({ 
                // sort on the first column and third column, order asc 
                sortList: [[0,0],[2,0]] 
        }); 
});
$( "#target" ).click(function() {
  alert( "Handler for .click() called." );
});
$( "#target" ).on( "click", function() {
  alert( $( this ).text() );
});