首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在PHP/Drupal中停止自动URL解码

在PHP/Drupal中停止自动URL解码
EN

Stack Overflow用户
提问于 2011-03-31 07:07:20
回答 2查看 3K关注 0票数 1

我将一个定制的XML数据从jQuery发送到Drupal/PHP,如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
$.ajax({
            type: 'POST',       
            url: this.href,

            success: function(data){ 

                alert('Form is successfully saved');


            },
            error:function(XMLHttpRequest, textStatus,  errorThrown){
                alert("Error");

            },

            data: 'myxml='+ mydata 
        });

我的XML标记包含URL,所以我对它们进行了编码,在进行AJAX调用之前,数据看起来有点像这样:

代码语言:javascript
代码运行次数:0
运行
复制
mydata="<txtLinkLocation>http%3A%2F%2Fportal.cubewerx.com%2Fcubewerx%2Fcubeserv%2Fcubeserv.cgi%3FCONFIG%3Dhaiti%26SERVICE%3DWFS%26DATASTORE%3DOSM%26request%3DGetCapabilities</txtLinkLocation>";

在PHP中,我获得接收到的数据,并按如下方式存储它:

代码语言:javascript
代码运行次数:0
运行
复制
$receivedXML = $_POST['myxml'];

现在,包含的$receivedXML如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
<txtLinkLocation>http://portal.cubewerx.com/cubewerx/cubeserv/cubeserv.cgi?CONFIG=haiti&SERVICE=WFS&DATASTORE=OSM&request=GetCapabilities</txtLinkLocation>

我的问题是为什么这个字符串中的URL会被自动解码?为什么会发生这种情况?我不希望对通过AJAX调用发送的数据执行任何自动操作。如何停止这种行为?我觉得我在这里遗漏了一些基本概念...

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-31 07:12:07

$_POST数据以与$_GET相同的方式发送到服务器。必须对其进行urlencoded发送,否则它可能会崩溃。这意味着在默认情况下,PHP将对urlencoded进行解码,因为它需要对数据进行urlencoded。

票数 2
EN

Stack Overflow用户

发布于 2011-03-31 07:15:27

默认情况下,PHP解码$_GET和$_REQUEST数据,参见the note in urldecoding on auto-encoding server variables。事实证明,$_POST也是如此。

解决方案:如果您希望对数据进行编码,请再次使用urlencode()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5493536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档