0

你好吗,我已经为此工作了 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;
    }
}
4

2 回答 2

1

和调用不应该在事件内open(),将它们移到外面。您也可以将事件从外部移出,因为每次更改下拉列表时都无需重新定义它。send()onreadystatechangeviewFeedback()

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);
 }

另请注意,您不会$_GET['condition']在 PHP 端做任何事情,因此无论选择哪个下拉项,响应都将始终相同。

于 2013-01-10T19:13:00.400 回答
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);
}

如果这不起作用,请告诉我。

于 2013-01-10T19:29:44.837 回答