Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我在使用Ajax显示数据时遇到问题_Php_Javascript_Ajax - Fatal编程技术网

Php 我在使用Ajax显示数据时遇到问题

Php 我在使用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

您好,我已经为此工作了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>
这里是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);
}