encodeURIComponent()似乎不用dojo.xhrPost()编码'+'字符

时间:2013-06-20 21:12:26

标签: javascript dojo urlencode

我正在尝试对在POST请求中作为参数传递的URL进行编码。 URL包含'+'字符,javascript的encodeURIComponent()似乎不编码那些。知道为什么会这样吗?

代码:

var url = "http://........"
 url += "&url=" + encodeURIComponent(params.url);

 var deferred = dojo.xhrPost({
        url: url,
        headers: { "X-Requested-With": null },
        sync: true,
        load: function(responseObject, ioArgs) {
            console.info(".....................");
            params.onSuccess();
        },
        error: function(error) {
            console.error("Error uploading image" + error);
            params.onError();
        }
    });

实际网址:

http://......../images/I/41zMWkv3+9L._CLa|500,500|41c4imMJhOL.jpg,31PAFct+UsL.jpg_.jpg

编码网址:

http://......../images/I/41zMWkv3+9L._CLa%7C500,500%7C41c4imMJhOL.jpg,31PAFct+UsL.jpg_.jpg

'|'字符被编码,但不是'+'。

这导致URL被解码为服务器端下面的一个('+'替换为''):

http://......../images/I/41zMWkv3 9L._CLa|500,500|41c4imMJhOL.jpg,31PAFct UsL.jpg_.jpg

我很感激任何帮助。

由于

1 个答案:

答案 0 :(得分:1)

当我使用encodeURIComponentdecodeURIComponent()处理此字符+或反' '

的查询字符串时,我遇到了这个特殊问题

我必须使用replace(" ", "+");

我说这是正常的,因为在此网站上查看并使用替换SITE 此网站建议在解码时将{替换为,因为unescape不会

我在+ DEMO

中尝试%2B编码

或使用decodeURIComponent(),但您不想DEMO

可以使用var url=document.location.search;处理变量内部的网址,其中只包含.html

之后的部分

<强> REPEAT:

search          Returns the query portion of a URL

示例:

http://localhost:8100/index2?json_data=demo_title%24+Demo+title+%23+proc1_script%24+

document.location.search

?json_data=demo_title%24+Demo+title+%23+proc1_script%24+

使用replace或其他方法后,您可以使用

更改网站的网址
document.location.href="index2"+url;

您可以使用index.htmlexercise.html更改索引2(您必须知道)

您可以在此site

上查找所有字符的编码

更新

您尝试使用此代码:

var url = "http://........"
 url += "&url=" + encodeURIComponent(params.url);
//There is a error because miss `?` then you replace `"?url="` else leave so

 var deferred = dojo.xhrPost(xhrArgs);
  var xhrArgs= {
        url: url,
        headers: { "X-Requested-With": null },
        sync: true,
        load: function(responseObject, ioArgs) {
            console.info(".....................");
            params.onSuccess();
        },
        error: function(error) {
            console.error("Error uploading image" + error);
            params.onError();
        }
    });

什么是params ????