.这是我的ajax请求: function ajaxFunc-6ren">
gpt4 book ai didi

javascript - 为什么ajax请求时字符 "+"没有发送到php文件?

转载 作者:行者123 更新时间:2023-11-28 12:29:21 26 4
gpt4 key购买 nike

在 Firefox 和 Chrome 中,我的 php ($_GET) 会接收数字、字母和特殊字符(例如“-”和“(”),但字符 + 除外>.这是我的ajax请求:

function ajaxFunction(param) {
var ajaxRequest;
try {
ajaxRequest = new XMLHttpRequest();
} catch (e1) {
try {
ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e2) {
try {
ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e3) {
alert("Something is wrong here. Please try again!");
return false;
}
}
}
ajaxRequest.onreadystatechange = function () {
if (ajaxRequest.readyState === 4) document.getElementById("myDiv").innerHTML = ajaxRequest.responseText;
};

ajaxRequest.open("GET", "AJAX_file.php?param=" + param, true);
ajaxRequest.send(null);
}

当用户单击按钮调用 ajaxFunction() 时,用户在单击按钮之前首先填写输入 type="text"。如上所述,在 Firefox 和 Chrome 中,我的 php 文件(AJAX_file.php;非常简单的代码版本如下)接收数字和字母以及特殊字符(例如“-”、“(”和“)”)但你明白了要点)并成功回显:

<?php include 'connect.php';
//Lots of code
echo $_GET['param'];

?>

但是,如果用户输入字符 + (n 次,其中 n >= 1),则不会有回显输出。请注意 Firebug 会看到附加的用户输入(此处显示为“++”):

GET http://www.mywebsite.com/AJAX_file.php?param=++ 200 OK 278ms

并且我的 php 错误日志没有显示任何通知、警告或错误。有人可以告诉我我在这里做错了什么吗?我正在使用网络托管服务...也许这可能是他们正在运行的过滤器之一?

最佳答案

+ 是 URL 中的保留字符。如果您想发送它,您必须将其转义为 %2B

查看 list of reserved characters you must escape 。您会注意到 (, )- 不在上面,但 + 在上面。

不过,不要自己进行编码/转义。每种语言和框架都有一种处理此问题的方法。在 JavaScript 中,使用 encodeURIComponent():

ajaxRequest.open("GET", "AJAX_file.php?param=" + encodeURIComponent(param), true);

关于javascript - 为什么ajax请求时字符 "+"没有发送到php文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23862428/

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