Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery$.post-我必须对URL参数进行编码吗?_Url_Jquery - Fatal编程技术网

jQuery$.post-我必须对URL参数进行编码吗?

jQuery$.post-我必须对URL参数进行编码吗?,url,jquery,Url,Jquery,我正在用$.post(url,cb)调用AJAX。我传递的URL可能有一些奇怪的字符,比如空格、&、?等等 我必须使用$.post(encodeURIComponent(url),cb) url类似于/foo/wird char§ 我必须使用$.post(encodeURIComponent(url),cb)吗 您必须在整个URI上使用encodeURIComponent(),但不能使用,只能在数据部分上使用(wird和chars)。URL和&分离参数必须保持不变。如果对整个URI进行编码,它将

我正在用
$.post(url,cb)
调用AJAX。我传递的URL可能有一些奇怪的字符,比如空格、
&
等等

我必须使用
$.post(encodeURIComponent(url),cb)

url
类似于
/foo/wird char§

我必须使用$.post(encodeURIComponent(url),cb)吗

您必须在整个URI上使用
encodeURIComponent()
,但不能使用,只能在数据部分上使用(
wird
chars
)。URL和
&分离参数必须保持不变。如果对整个URI进行编码,它将变得不可用

如果要使用
data
参数将数据添加为POST数据:

url = "/foo/possible";
$.post(url, { "weird": "f2(90§§$", "chars": "ß1028490" });

jQuery的Ajax函数将负责自动对数据进行URL编码

是的,您需要对查询字符串中的键和值进行编码(但不包括将路径与查询参数分开的
,以及将查询参数分开的
&
)。如果使用
$.post
的数据参数,这将内置到jQuery中,如下所示:

$.post(url, { name: "John", time: "2pm" }, cb);

我使用MVC3/EntityFramework作为后端,前端通过jquery使用我的所有项目控制器,当您直接传递URL硬编码以外的参数时,直接过帐(使用$.post)不需要数据加密。 我已经测试了几个字符,我甚至发送了一个URL(这一个)作为参数,没有任何问题,即使encodeURIComponent在URL中传递所有数据(硬编码)时工作得很好

硬编码URL,即>

 var encodedName = encodeURIComponent(name);
 var url = "ControllerName/ActionName/" + encodedName + "/" + keyword + "/" + description + "/" + linkUrl + "/" + includeMetrics + "/" + typeTask + "/" + project + "/" + userCreated + "/" + userModified + "/" + status + "/" + parent;; // + name + "/" + keyword + "/" + description + "/" + linkUrl + "/" + includeMetrics + "/" + typeTask + "/" + project + "/" + userCreated + "/" + userModified + "/" + status + "/" + parent;
否则不要使用encodeURIComponent,而是尝试在ajax post方法中传递参数

 var url = "ControllerName/ActionName/";   
 $.post(url,
        { name: nameVal, fkKeyword: keyword, description: descriptionVal, linkUrl: linkUrlVal, includeMetrics: includeMetricsVal, FKTypeTask: typeTask, FKProject: project, FKUserCreated: userCreated, FKUserModified: userModified, FKStatus: status, FKParent: parent },
 function (data) {.......});

据我所知,不是针对POST no。这是毫无意义的,因为我可以从我的本地主机制作一个表单,发布到您的表单
action
属性(url)并转义
encodeURIComponent
应该使用服务器端来处理100%sure@Val这与安全无关,但是关于正确地发送请求,我正计划试图逃避这个问题?还有&查尔斯,但我觉得这不是一个好计划。如果不是/foo/可能,而是/foo/po§§§§§§§§§
,那么您确实需要转义
po§§§§§§§
,但您不能转义斜杠
/
,这正是我正在做的:
$.post(url,{param1:normalText],param2:contains%“}),但由于jQuery未对参数2进行正确编码,因此该参数在服务器中未被正确解码。@Gustavo-word!非常确定jQuery应该在这种情况下进行编码,但无法快速找到它的源代码。请求中的值是什么样子的?不管怎样,这是一个缓存问题。在我将
$.ajax
更改为
$.post
并将数据作为普通对象而不是字符串正确传递之后,编码工作正常。