Php 我在使用Ajax显示数据时遇到问题
您好,我已经为此工作了2个小时了,当我更改页面时,我似乎无法让页面动态显示信息。如果有人能告诉我出了什么问题,我将不胜感激 这是我的HTMLPhp 我在使用Ajax显示数据时遇到问题,php,javascript,ajax,Php,Javascript,Ajax,您好,我已经为此工作了2个小时了,当我更改页面时,我似乎无法让页面动态显示信息。如果有人能告诉我出了什么问题,我将不胜感激 这是我的HTML <h2>Feedbacks</h2> <form> <select onchange="viewFeedback(this.value);"> <option value="unread">View Unread</option> <option value="a
<h2>Feedbacks</h2>
<form>
<select onchange="viewFeedback(this.value);">
<option value="unread">View Unread</option>
<option value="all" >View All</option>
</select>
</form>
<div id="feedbackview"></div>
这里是php
$condition = $_GET['condition'];
$db = new db();
$query = $db->query("SELECT * FROM feedback");
$rows = $db->countRows($query);
if($rows != 0) {
$results = $db->getRows($query);
foreach($results as $result) {
extract($result);
echo $name;
}
}
open()
和send()
调用不应在onreadystatechange
事件中,请将它们移到外部。您也可以将事件从viewFeedback()
移动到外部,因为无需每次更改下拉列表时都重新定义它
var http = createObject();
http.onreadystatechange = function() {
if(http.readyState == 4) {
document.getElementById('feedbackview').innerHTML=http.responseText;
}
}
function viewFeedback(condition) {
http.open("GET",'viewfeedback.php?condition='+condition,true);
http.send(null);
}
还要注意的是,在PHP端没有使用
$\u GET['condition']
执行任何操作,因此无论选择了哪个下拉项,响应都是相同的。首先,我不知道Ajax创建功能是否如此强大。我现在会把它注释掉,只有当它在受支持的浏览器中不工作时,我才会把它添加回去。相反,只需这样做:
var http = new XMLHttpRequest();
接下来,尝试直接在浏览器中点击PHP web服务。它起作用了吗?如果是这样,请修复Ajax请求中的问题:
function viewFeedback(condition) {
http.open("GET", 'viewfeedback.php?condition=' + condition, true);
http.onreadystatechange = function() {
if (http.readyState == 4) {
if (http.status == 200) {
document.getElementById('feedbackview').innerHTML = http.responseText;
} else {
console.log(http.response);
}
}
}
http.send(null);
}
如果这不起作用,请告诉我。…或者事件更好-只需在AJAX调用中使用jQuery即可。嗯,它工作得非常好。我不得不改变一些东西,但它是伟大的。谢谢
function viewFeedback(condition) {
http.open("GET", 'viewfeedback.php?condition=' + condition, true);
http.onreadystatechange = function() {
if (http.readyState == 4) {
if (http.status == 200) {
document.getElementById('feedbackview').innerHTML = http.responseText;
} else {
console.log(http.response);
}
}
}
http.send(null);
}