我在这里阅读了几篇关于AJAX的帖子和教程,并且我已经让它工作得很好 - 在一个页面上,但我还是刚接触AJAX的新手,所以我点了一个粗糙的地方,我无法理解如何修复。
我有我的主页 ajaxtest.php ,其中包含以下代码的下拉列表:
<a>
<?php
include('./db.php');
$PM = mysqli_query($con, "SELECT DISTINCT PMName FROM report WHERE PMname <> '' ORDER BY PMName ASC");
?>
<select name="PMName" onchange="showUser(this.value)">
<?php
while ($row = mysqli_fetch_row($PM)) {
$selected = array_key_exists('PMName', $_POST) && $_POST['PMName'] == $row[0] ? ' selected' : '';
printf(" <option value='%s' %s>%s</option>\n", $row[0], $selected, $row[0]);
}
?></select></a>
拉出这个功能:
<script>
function showUser(str) {
if (str !==".PM") {
if (str=="") {
document.getElementById("txtHint").innerHTML="";
return;
}
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
}
xmlhttp.open("GET","getuser.php?q="+str,true);
xmlhttp.send();
}
</script>
将数据库中的选择发送到我的第二页, getuser.php 。
然后用户看到初始页面的其余部分填充了getuser.php的结果,其中包含我的大部分代码和填充了SQL信息的HTML表。
这很好。
我的问题源于这样一个事实:一旦(并原谅我缺乏技术术语)getuser.php填充到ajaxtest.php中的<div>
,我就不能使用任何其他JavaScript或者AJAX函数或整个页面只是刷新,好像我从头再次重新加载ajaxtest.php,它让我回到初始的空白屏幕与下拉菜单。
在getuser.php上,在整个表格周围的<form>
内,有一个提交按钮:
<form action="" method="POST" onsubmit="test()">
和
<input class="button" name="update"<?= $LineID ?>" type="submit" id="update" value="UPDATE">
这应该链接到我的JavaScript test()函数,它只是读取:
function test() {
alert("yo");
}
但是当我单击按钮时,整个页面将刷新而不是执行此功能。这是为什么?
如果我手动转到localhost/getuser.php?q=John%20Doe
而不是“将此页面加载到我的ajaxtest.php <div>
”并单击按钮,它就可以正常和我获取JavaScript警报以弹出。我在这里做错了什么?
答案 0 :(得分:0)
尝试编辑函数test()
以返回false
function test() {alert("yo"); return false}
并更改行
<form action="" method="POST" onsubmit="test()">
进入
<form action="" method="POST" onsubmit="return test()">
现在它不应该刷新页面。 <{1}}中使用的函数需要返回true或false。