一页中有多个XMLHttpRequest

时间:2019-02-03 14:36:42

标签: javascript php

我遇到以下情况,但由于某些原因,其中只有一个正在工作?

预期结果是,由filter2填充的第二个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>

Filter2:

<!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>

我不确定这是一个常见错误还是我有某种冲突/愚蠢的语法错误,但这使我发疯,我将永远感谢任何人的帮助?

1 个答案:

答案 0 :(得分:0)

就像我在评论中说过(@jcubic在第一个评论中也提到过),img元素没有value属性,我怀疑这是您的函数传递{{ 1}}

相反,您可以使用undefined属性并更改传递给内联函数/事件处理程序的参数:

dataset

和javascript函数

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

那说您最好创建一个通用的ajax函数(或者更好地研究/* 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 */ } api)并为每个用例编写包装函数。