请问:如何让ajax与php写在同一个文件中

leetow2006 2017-12-27 01:12:49
请看我写一个ajax的测试文件的:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<script type="text/javascript">
function showHint(str)
{
if (str=="")
{
alert("showHint()函数的参数不能为空!");
return;
}
xmlHttp=GetXmlHttpObject();
if (xmlHttp==null)
{
alert("您的浏览器不支持这个请求!");
return;
}
var url="#";
url=url+"?q="+str;
xmlHttp.onreadystatechange=stateChanged;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}


function stateChanged()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState==200)
{
var neirong=xmlHttp.responseText ;
alert(neirong);
}
}


function GetXmlHttpObject()
{
var xmlHttp=null;
xmlHttp=new XMLHttpRequest();
return xmlHttp;
}

</script>

</head>
<body >
<input type="submit" name="button" id="button" value="提交" onkeyup="showHint('ok');"/>

<?php
$q1=$_GET["q"]; //运行提示这句出错
if($q1=="ok"){
$response="888888";
}else{
$response="99999";
}
echo $response;
?>

</body>
</html>
运行时提示:Undefined index: q,
我的程序必须是在同一个文件中的,请问:错在哪?如何更改?
另外: 提交时url="#"这样写,表示在同一个文件中吗?
...全文
791 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
leetow2006 2017-12-28
  • 打赏
  • 举报
回复
我的程序大概是这样的: 前端: <form id="form1" name="form1" method="post" action="insfilmin2.php"> <p class="STYLE2">膜名称 <input name="uname" type="text" id="uname" onkeyup()="函数"/> </p> <select size="4" name="ListBox" id="ListBox" style="width:300px; height:250px;"> <option value="记录1">记录1</option> <option value="记录2">记录2</option> <option value="记录3">记录3</option> ... </select> 服务器端 $query="select * from filmlist where name like '%$_POST[uname]%'"; $result=$db->query($query); 我希望是:在前端的<input name="uname" type="text" id="uname" onkeyup()="函数"/>一输入数据,后台就能把数据传递过来, 并且是一条一条的,因为前端数据是存放在select的option标签中,请问:这该如何做呢?能给个思路吗?
天际的海浪 2017-12-28
  • 打赏
  • 举报
回复
再有的方法是传json数据更新: 服务器输出json数据,前端接收json数据后用JSON.parse()转换成js的数组与对象。遍历这个数组与对象动态创建出需要的html元素更新到页面上。 这样的好处是前后端分离,服务器端只提供数据,所有页面样式与布局都在前端完成。
天际的海浪 2017-12-28
  • 打赏
  • 举报
回复
思路就是我上面说的,这是任何内容都通用的方法。只是更新时要连select标签一起更新,
天际的海浪 2017-12-27
  • 打赏
  • 举报
回复
引用 9 楼 leetow2006 的回复:
如果数据库中的数据很多,document.getElementById("contentBox").innerHTML=xmlHttp.responseText; 可以实现吗?
可以
leetow2006 2017-12-27
  • 打赏
  • 举报
回复
引用 8 楼 jslang 的回复:
[quote=引用 5 楼 leetow2006 的回复:] 我的程序是这样的:希望在页面中输入一个字符串,通过ajax传递给同一个文件中的php代码,通过查询获取相应的mysql中表的数据, 并且能立刻显示出来(显示代码也是在同一个文件中)。请问能用什么办法把程序分开写?
比如你主页面是

<?php
页面设置和数据库连接
?>
<!doctype html>
<html lang="en">
<head>
	<meta charset="UTF-8" />
	<title> 页面名称 </title>
</head>
<body>
。。。。。主页面内容。。。。。。
。。。。。主页面内容。。。。。。
<div id="contentBox">
<?php
读取数据库,输出页面初始时的数据
?>
</div>
。。。。。主页面内容。。。。。。
。。。。。主页面内容。。。。。。
</body>
</html>
就再写一个ajax加载的页面

<?php
页面设置和数据库连接
?>
<?php
读取数据库,输出读取的数据
?>
这个页面只有数据输出,没有主页面的其它内容 用ajax加载这个页面之后,用 document.getElementById("contentBox").innerHTML=xmlHttp.responseText; 更新主页面的<div id="contentBox">区域 [/quote] 如果数据库中的数据很多,document.getElementById("contentBox").innerHTML=xmlHttp.responseText; 可以实现吗?
天际的海浪 2017-12-27
  • 打赏
  • 举报
回复
引用 5 楼 leetow2006 的回复:
我的程序是这样的:希望在页面中输入一个字符串,通过ajax传递给同一个文件中的php代码,通过查询获取相应的mysql中表的数据, 并且能立刻显示出来(显示代码也是在同一个文件中)。请问能用什么办法把程序分开写?
比如你主页面是

<?php
页面设置和数据库连接
?>
<!doctype html>
<html lang="en">
<head>
	<meta charset="UTF-8" />
	<title> 页面名称 </title>
</head>
<body>
。。。。。主页面内容。。。。。。
。。。。。主页面内容。。。。。。
<div id="contentBox">
<?php
读取数据库,输出页面初始时的数据
?>
</div>
。。。。。主页面内容。。。。。。
。。。。。主页面内容。。。。。。
</body>
</html>
就再写一个ajax加载的页面

<?php
页面设置和数据库连接
?>
<?php
读取数据库,输出读取的数据
?>
这个页面只有数据输出,没有主页面的其它内容 用ajax加载这个页面之后,用 document.getElementById("contentBox").innerHTML=xmlHttp.responseText; 更新主页面的<div id="contentBox">区域
leetow2006 2017-12-27
  • 打赏
  • 举报
回复
引用 6 楼 xueyuxiongshi 的回复:
直接将php的代码拷出来,放到另一个php文件中(例如test.php 和ajax请求的文件同一个目录下), ajax 请求中的url 中的#替换成 test.php 的文件名就好了
你这样不行,不能满足我的要求
xueyuxiongshi 2017-12-27
  • 打赏
  • 举报
回复
直接将php的代码拷出来,放到另一个php文件中(例如test.php 和ajax请求的文件同一个目录下), ajax 请求中的url 中的#替换成 test.php 的文件名就好了
leetow2006 2017-12-27
  • 打赏
  • 举报
回复
我的程序是这样的:希望在页面中输入一个字符串,通过ajax传递给同一个文件中的php代码,通过查询获取相应的mysql中表的数据, 并且能立刻显示出来(显示代码也是在同一个文件中)。请问能用什么办法把程序分开写?
天际的海浪 2017-12-27
  • 打赏
  • 举报
回复
引用 3 楼 leetow2006 的回复:
[quote=引用 2 楼 jslang 的回复:] 你要加载当前页面,直接 var url = "?q=" + str; 就好。 但是用ajax加载,更新的内容是在xmlHttp.responseText中,不会自行刷新页面。
那么:$q1=$_GET["q"]; //运行提示这句出错,提示Undefined index: q, 请问:怎么解决?[/quote] 在打开网页时就要在地址中加上?q=xxx的get参数 话说,用ajax的话,加载的内容就应当单独写一个php文件, 不应该再次加载当前页面,与当前页面写在一起的php只附则页面初始化时的工作
leetow2006 2017-12-27
  • 打赏
  • 举报
回复
引用 2 楼 jslang 的回复:
你要加载当前页面,直接 var url = "?q=" + str; 就好。 但是用ajax加载,更新的内容是在xmlHttp.responseText中,不会自行刷新页面。
那么:$q1=$_GET["q"]; //运行提示这句出错,提示Undefined index: q, 请问:怎么解决?
天际的海浪 2017-12-27
  • 打赏
  • 举报
回复
你要加载当前页面,直接 var url = "?q=" + str; 就好。 但是用ajax加载,更新的内容是在xmlHttp.responseText中,不会自行刷新页面。
天际的海浪 2017-12-27
  • 打赏
  • 举报
回复
#表示空锚点。只有在超链接跳转时才有用,不写文件和路径时就默认是当前文件和路径,不过超链接的href又不能是空字符串,所以只好写成"#"空锚点。 而且#锚点必须写在?参数的后面。 xxx.php?q=123#abc 不能是 xxx.php#abc?q=123 这样。“abc?q=123”会整个认作是锚点

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧