javascript - 为什么 PHP 将 url '+' 字符解码为空格?

标签 javascript php jquery

这是我的 javascript jquery ajax 函数来发送数据。在这里,我将数据附加到 url 以将其发送到服务器。

 url = "/login/auth/";
        $.ajax({
            dataType: "json",
            url: url+encodeURIComponent("a+b+2"),
            success: function (data, textStatus, jqXHR) {
                if (data.login === false)
                {
                    alert("Invalid Password");
                } else {
                    $('.login').hide();
                    $("body").append(data.html);
                }

            }
        });

在 PHP 中

 if (isset($_GET['r']))
 {
        echo 'r='.$_GET['r'];
        return explode('/',rtrim($_GET['r'], '/'));
    }

PHP 将其解码为 login/auth/a b 2

最佳答案

这是因为 url 中的 + 符号表示空格。它基本上是 %20 的更短(且更易读)版本。

要发送+,请像使用任何其他特殊字符一样对其进行编码。编码的+%2B。但实际上,encodeURIComponent 应该已经做到了。您是否可能在 PHP 中对 url 进行了两次解码?

关于javascript - 为什么 PHP 将 url '+' 字符解码为空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33269804/

相关文章:

php - 在 php 中加载页面时选择选项清除

javascript - 如何在 React 或 Next.js 中使用绝对路径而不是相对路径?

php - 我应该如何向长列表发送电子邮件? (PHP)

php - 在 PHP 中创建数组的简单方法

jQuery 下拉列表

javascript - 使用 jQuery 切换 div 的问题

javascript - Ajax 提交 ajax 加载的表单

PHP:如果($Name= ='ProxiedIP')导致 500(内部服务器错误)

javascript - Vue.js 与 Laravel 5.3

javascript - 如何检查至少一项输入是否完成?