当我使用下面指出的ajax调用时,我的页面被看到2次。我认为ajax函数再次调用我的页面来查看返回结果。
<?
if(isset($_GET['q'])){
$q=(int)$_GET['q'];
echo $q;
}
?>
<html>
<head>
<script type="text/javascript">
function showUser(str)
{
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","java.php?q="+str,true);
xmlhttp.send();
}
</script>
</head>
<body>
<form>
<select name="users" onchange="showUser(this.value)">
<option value="">Select a person:</option>
<option value="1">Peter Griffin</option>
<option value="2">Lois Griffin</option>
<option value="3">Glenn Quagmire</option>
<option value="4">Joseph Swanson</option>
</select>
</form>
</br><div id="txtHint"><b>Person info will be listed here.</b></div>
</body>
</html>
但我只想在我的php mixed html文件中使用参数q。例如,使用ajax我捕获person的值并将其放在q参数中,然后在sql查询中使用它(例如我将使用该查询来填充另一个下拉列表)
"select * from persons where id=".$q;
如何在不重复页面的情况下做到这一点?
*我不能把bc作为菜鸟
答案 0 :(得分:1)
我想这段代码属于java.php
是的,您的ajax还使用java.php
参数调用q
文件。
你可以做两件事。
您可以更改正在调用的文件,并在那里执行必要的操作,例如ajaxresult.php
或者您可以在使用ajax
调用代码时停止代码if(isset($_GET['q'])) {
$q=(int)$_GET['q'];
echo $q;
exit;
}
答案 1 :(得分:0)
您需要将所有内容都包含在1个文件中吗? 我相信它被命名为java.php - 你用ajax调用它,第一个条件将回显q,但是你的html代码也会被打印出来,因为没有别的。添加else,或将ajax调用的php放到不同的文件中。
编辑:你可以使用像这样的东西
<?php
if ( 1==1) // or 1!=1
{
?>
text
<?
}
else
{
?>
someothertext
<?
}
编辑:经过测试,100%正常工作 - 取决于条件仅写入text
或someothertext
,因此它也适用于您,是否仍在打印整页?