【问题标题】:Passing Value Including Spaces on Ajax Call在 Ajax 调用中传递包含空格的值
【发布时间】:2011-04-16 00:51:12
【问题描述】:

尝试在 ajax 调用中传递空格。

'word' 的传递方式与 'word' 相同,我相信是这样。

另一方面,两个词需要用 call 完全发送。

'word second' 但不一样 '字第二'

我应该在调用之前修剪还是在服务器端脚本上执行此操作? 我如何也可以发送空间?

【问题讨论】:

    标签: php javascript ajax xmlhttprequest


    【解决方案1】:

    我认为最简单的方法是在发送xmlhttprequest之前在javascript中encodeURIComponent字符串,然后urldecode 它在 PHP 中

    【讨论】:

      【解决方案2】:

      要允许参数包含空格等,您需要使用 javascript escape() [W3Schools] 函数。

      escape( 'hello world ' ) = 'hello%20world%20';
      

      PHP 端的处理将自动解码/取消转义参数,恢复空格(以及通过 AJAX 发送时不能成为参数值一部分的任何其他字符,例如“=”或“&”。

      在 PHP 中,如果您想去除任何前导或尾随空格,可以使用 PHP trim() [PHP.net] 函数。

      trim( 'hello world ' ) = 'hello world';
      

      【讨论】:

        【解决方案3】:

        我知道这是一个老问题,但我想指出,接受的答案是建议一个自 JavaScript 版本 1.5 起已弃用的函数。

        您应该使用encodeURI()encodeURIComponent() 来发送空格和其他特殊字符。

        var param = encodeURIComponent("word second "); 
        console.log(param); // outputs 'word%20second%20'
        

        另一端的 PHP 将自动处理解码。您应该修剪服务器端,因为用户可以编辑客户端代码以规避修剪,这可能会导致错误或漏洞。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-10-28
          • 2018-01-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多