Javascript PHP/AJAX停止jquery工作?
这里有一个问题,当我将jquery作为一个页面查看时,它可以正常工作,但是当我尝试使用PHP include或ajax将该PHP文件包含在另一个页面中时,jquery似乎无法加载 我对所有这些东西都比较陌生,所以很可能我在做一些愚蠢的事情,任何帮助都将不胜感激 HTML代码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
函数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() );
});