你是怎么做的,我现在已经工作了2个小时了,当我改变它时,我似乎无法让我的页面动态显示信息。如果有人能告诉我出了什么问题,我将不胜感激。
这是我的HTML
<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>
这是我的ajax
function createObject() {
var request_type;
var browser = navigator.appName;
if(browser == "Microsoft Internet Explorer"){
request_type = new ActiveXObject("Microsoft.XMLHTTP");
}else{
request_type = new XMLHttpRequest();
}
return request_type;
}
var http = createObject();
function viewFeedback(condition) {
http.onreadystatechange = function() {
if(http.readyState == 4) {
document.getElementById('feedbackview').innerHTML=http.responseText;
}
http.open("GET",'viewfeedback.php?condition='+condition,true);
http.send(null);
}
}
这里是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;
}
}
答案 0 :(得分:1)
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端对$_GET['condition']
执行任何操作,因此无论选择哪个下拉项,响应都将始终相同。
答案 1 :(得分:0)
首先,我不知道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);
}
如果这不起作用,请告诉我。