PHP Ajax onkeyup 在我的 Switch 案例网站上不起作用
PHP Ajax onkeyup doesn't work on my Switch case website
我有一个网站,我在其中使用 php 大小写并将其包含为网站。
所以根据 ?page="" 结果我得到它包括一个新网站。
示例:www.test.come/?page=test.
我用来测试 PHP 和 Ajax onkeyup 函数的例子是这个:
Test.php
<script>
function showHint(str) {
if (str.length == 0) {
document.getElementById("txtHint").innerHTML = "";
return;
} else {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("txtHint").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET", "gethint.php?q=" + str, true);
xmlhttp.send();
}
}
</script>
</head>
<body>
<p><b>Start typing a name in the input field below:</b></p>
<form>
First name: <input type="text" onkeyup="showHint(this.value)">
</form>
<p>Suggestions: <span id="txtHint"></span></p>
gethint.php
<?php
// Array with names
$a[] = "Anna";
$a[] = "Brittany";
$a[] = "Cinderella";
$a[] = "Fiona";
$a[] = "Gunda";
// get the q parameter from URL
$q = $_REQUEST["q"];
$hint = "";
// lookup all hints from array if $q is different from ""
if ($q !== "") {
$q = strtolower($q);
$len=strlen($q);
foreach($a as $name) {
if (stristr($q, substr($name, 0, $len))) {
if ($hint === "") {
$hint = $name;
} else {
$hint .= ", $name";
}
}
}
}
// Output "no suggestion" if no hint was found or output correct values
echo $hint === "" ? "no suggestion" : $hint;
?>
因此,如果我的 www.test.com/?page=test 它将包含我网站上的 Test.php。
Test.php 上的所有内容都已上传到网站上,看起来不错,但是当我在框中输入字母 a 时,Anna 的名字应该会弹出,但实际上并没有。
但是如果我输入 www.test.com/include/Test.php 页面,其中存在 Test.php 文件,它可以完美运行。
这是我用来在不同页面之间切换的代码:
<?php
if(isset($_GET["page"])){
$page = $_GET["page"];
} else {
$page = "News";
}
我认为这可能是这不起作用的最大原因,但我需要解释原因以及是否可以做些什么来使其起作用。
我可以为您提供有关我所有代码的完整示例,但这将变成一堵文字墙,所以我认为可以节省您的时间,但会缩短时间。如果您需要完整的代码来解决问题,那么我会帮助您。
非常感谢您花时间阅读本文并尝试解决它。
此致
西蒙
您需要更改 AJAX 调用以使用 gethint.php
的绝对路径。否则它将在与进行 AJAX 调用的页面相同的文件夹中查找它。
xmlhttp.open("GET", "/include/gethint.php?q=" + str, true);
我有一个网站,我在其中使用 php 大小写并将其包含为网站。 所以根据 ?page="" 结果我得到它包括一个新网站。
示例:www.test.come/?page=test.
我用来测试 PHP 和 Ajax onkeyup 函数的例子是这个:
Test.php
<script>
function showHint(str) {
if (str.length == 0) {
document.getElementById("txtHint").innerHTML = "";
return;
} else {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("txtHint").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET", "gethint.php?q=" + str, true);
xmlhttp.send();
}
}
</script>
</head>
<body>
<p><b>Start typing a name in the input field below:</b></p>
<form>
First name: <input type="text" onkeyup="showHint(this.value)">
</form>
<p>Suggestions: <span id="txtHint"></span></p>
gethint.php
<?php
// Array with names
$a[] = "Anna";
$a[] = "Brittany";
$a[] = "Cinderella";
$a[] = "Fiona";
$a[] = "Gunda";
// get the q parameter from URL
$q = $_REQUEST["q"];
$hint = "";
// lookup all hints from array if $q is different from ""
if ($q !== "") {
$q = strtolower($q);
$len=strlen($q);
foreach($a as $name) {
if (stristr($q, substr($name, 0, $len))) {
if ($hint === "") {
$hint = $name;
} else {
$hint .= ", $name";
}
}
}
}
// Output "no suggestion" if no hint was found or output correct values
echo $hint === "" ? "no suggestion" : $hint;
?>
因此,如果我的 www.test.com/?page=test 它将包含我网站上的 Test.php。
Test.php 上的所有内容都已上传到网站上,看起来不错,但是当我在框中输入字母 a 时,Anna 的名字应该会弹出,但实际上并没有。
但是如果我输入 www.test.com/include/Test.php 页面,其中存在 Test.php 文件,它可以完美运行。
这是我用来在不同页面之间切换的代码:
<?php
if(isset($_GET["page"])){
$page = $_GET["page"];
} else {
$page = "News";
}
我认为这可能是这不起作用的最大原因,但我需要解释原因以及是否可以做些什么来使其起作用。
我可以为您提供有关我所有代码的完整示例,但这将变成一堵文字墙,所以我认为可以节省您的时间,但会缩短时间。如果您需要完整的代码来解决问题,那么我会帮助您。
非常感谢您花时间阅读本文并尝试解决它。
此致 西蒙
您需要更改 AJAX 调用以使用 gethint.php
的绝对路径。否则它将在与进行 AJAX 调用的页面相同的文件夹中查找它。
xmlhttp.open("GET", "/include/gethint.php?q=" + str, true);