辅助页面上的ajax查询

时间:2014-10-24 20:16:13

标签: javascript php jquery ajax

背景

我在这里阅读了几篇关于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警报以弹出。我在这里做错了什么?

1 个答案:

答案 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。