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>

これは私のアヤックスです

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()呼び出しは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);
 }

$_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 に答える