在一个页面多的XMLHttpRequest

问题描述 投票:-1回答:1

我有我在哪里做出如下要求和出于某种原因只有一个工作的情况?

预期的结果是,这是由过滤器2填充第二个div将必要的信息带来的,但是这是行不通的,即使这是继相同的逻辑过滤器1?

对于实际的请求的代码是在这里:

请求1:

function show1(str) {
        if (str == "") {
            document.getElementById("id1").innerHTML = "";
            return;
        }
        if (window.XMLHttpRequest) {

            xmlhttp = new XMLHttpRequest();
        } else { 
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
                document.getElementById("id1").innerHTML = this.responseText;
            }
        }
        xmlhttp.open("GET", "filter1.php?q=" + str, true);
        xmlhttp.send();
    }

要求2:

function show2(str) {
            if (str == "") {
                document.getElementById("id2").innerHTML = "";
                return;
            }
            if (window.XMLHttpRequest) {

                xmlhttp = new XMLHttpRequest();
            } else { 
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            xmlhttp.onreadystatechange = function() {
                if (this.readyState == 4 && this.status == 200) {
                    document.getElementById("id2").innerHTML = this.responseText;
                }
            }
            xmlhttp.open("GET", "filter2.php?p=" + str, true);
            xmlhttp.send();
        }

PHP代码如下所示为这两种请求的情况如下:

过滤器1:

<!DOCTYPE html>
<html>
<head>

</head>
<body>

<?php
include('db.php');

$q = strval($_GET['q']);

mysqli_select_db($mysqli,"database");
$search="SELECT * FROM column WHERE type = '".$q."'";
$result = mysqli_query($mysqli,$search);

echo "<ul id=\"list\">";
while($row = mysqli_fetch_array($result)) {
echo "<li>";
echo "<a class=\"class\">" . $row['column'] . "</a>";
echo "<a class=\"class\"><strong>" . $row['column'] . "</strong></a>";
echo "<button><img src=\"icons/image.png\" style=\"height:42px;width:42px;\" onclick=\"show2(this.value)\" value=\"" . $row['column'] . "\" class=\"class\"></button>";
echo "</li>";       
}
echo "</ul>";
mysqli_close($mysqli);
?>
</body>
</html>

过滤器2:

<!DOCTYPE html>
<html>
<head>

</head>
<body>

<?php
include('db.php');

$p = strval($_GET['p']);

mysqli_select_db($mysqli,"database");
$search="SELECT * FROM column WHERE name = '".$p."'";
$result = mysqli_query($mysqli,$search);

echo "<table>";
while($row = mysqli_fetch_array($result)) {
echo "<tr id=\"id\"><td><strong>" . $row['column'] . "</strong></td></tr>";
echo "<tr id=\"id\"><td><a href=\"tel:"  . $row['column'] . "\">TestContact</a></td></tr>";
echo "<tr id=\"id\"><td>" . $row['column'] . "</td></tr>";
echo "<tr id=\"id\"><td><a href="  . $row['column'] . "\">Website ></a></td></tr>"; 
}
echo "</ul>";
mysqli_close($mysqli);
?>
</body>
</html>

我不知道这是否是一个常见的错误,或者有某种冲突/愚蠢的语法错误,但是这是推动我疯了,我会永远感激任何人帮助吗?

javascript php
1个回答
0
投票

就像我在评论说,(并通过@jcubic第一评论还指出)的img元素不具有价值属性,是,我怀疑,你的功能是通过undefined的原因

相反,你可以使用一个dataset属性,并改变传递给内联函数/事件处理函数的参数:

echo "<button><img src=\"icons/image.png\" style=\"height:42px;width:42px;\" onclick=\"show2(event)\" data-value=\"" . $row['column'] . "\" class=\"class\"></button>";

以及JavaScript函数

/* passing event allows access to event.target amongst other things - this is useful */

function show2( e ){
    var el=e.target;
    var str=el.dataset.value;
    if( str )/* etc */
}

是说你要好得多创建一个通用的AJAX功能(或更好,但考虑了fetch API)和写包装函数为每个用例。

© www.soinside.com 2019 - 2024. All rights reserved.