1

我正在尝试对在 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 解码为以下 URL('+' 替换为 ''):

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

我将不胜感激。

谢谢

4

1 回答 1

1

encodeURIComponent当我使用ordecodeURIComponent()为这个字符+或反字符处理查询字符串时,我也遇到了这个特殊的问题' '

我不得不使用replace(" ", "+");.

我说这很正常,因为在这个站点上查看并且它使用替换站点 这个站点建议在解码时替换 + ,因为 unescape 没有

我尝试在DEMO+中编码%2B

或者有decodeURIComponent()但你不想DEMO

可以在变量中使用var url=document.location.search;仅包含部分之后的url.html

重复:

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;

您可以更改的 index2index.htmlexercise.html(您必须知道)

您可以在此站点上的所有字符中查找编码

更新

您尝试使用以下代码:

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???

于 2013-06-20T22:02:14.487 回答