gpt4 book ai didi

javascript - 传递字符串时 AJAX 查询不起作用

转载 作者:行者123 更新时间:2023-11-30 12:34:07 24 4
gpt4 key购买 nike

解释

我在 PHP 中有以下代码,允许用户从下拉列表中选择一个名称,然后将该名称作为字符串传递给 JavaScript 函数:

<?php
include('./db.php');
$PM = mysqli_query($con, "SELECT DISTINCT PMName FROM report WHERE PMname <> '' ORDER BY PMName ASC");
?>
<select class="navbar-inverse" placeholder="PM Name" name="PMName" onchange="showUser(this.value)">
<?php
while ($row = mysqli_fetch_row($PM)) {
$selected = array_key_exists('PMName', $_POST) && $_POST['PMName'] == $row[0] ? ' selected' : '';
printf(" <option value='%s' %s>%s</option>\n", $row[0], $selected, $row[0]);
}
?>

然后 JavaScript 函数读取字符串:

function showUser(str) {
if (str !==".PM") {
if (str=="") {
document.getElementById("txtHint").innerHTML="";
return;
}
}
$("#txtHint").load( "getuser.php?q="+str );
console.log(str);
}

并且应该放置 getuser.php?q=John%Doe 的输出 进入 txtHint DIV。

问题

str 值似乎没有完全传递到 $("#txtHint").load( "getuser.php?q="+str );代码行。

当我查看我的控制台时,一旦 JavaScript 函数触发,我会看到以下内容:

HR finished loading: GET "http://localhost/getuser.php?q=John"
John Doe

如果我将代码更改为只读 $("#txtHint").load( "getuser.php?q="); ,(不传递 str 变量,)它工作正常并将 getuser.php 页面加载到 DIV 中,(当然,没有名称我不会取回任何信息,但它工作......)

我在这里做错了什么?如果console.log(str)正在输出 John Doe , 那么显然整个字符串是 John Doe ,那么为什么我的控制台输出 ?q=John ?并导致 getuser.php 无法加载到 DIV 中?

我在这里很困惑....

最佳答案

如果要将字符串作为查询变量发送,则需要对其进行编码:

$("#txtHint").load( "getuser.php?q="+encodeURIComponent(str));

关于javascript - 传递字符串时 AJAX 查询不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26663283/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com