jQuery的$ .ajax URL编码问题

我正在使用jQuery的$ .ajax方法向REST服务发送和检索数据。 我提供给$ .ajax方法的一些URL需要空格和其他特殊字符进行编码。

问题在于Chrome,Safari(Webkit)和Internet Explorer浏览器。 Firefox POST是一个URL,它被编码但其他浏览器POST到一个未编码的URL。

举个例子:

$.ajax ({ url: "http://localhost:8080/rest/123/Product Line A/[Product Type B]", type: "POST", dataType: "json", data: { ... }, success: function(...){}, error: function(...){} }) 

Firefox以下列格式发布URL:

 http://localhost:8080/rest/123/Product%20Line%20A/%5BProduct%20Type%20B%5D 

Chrome,Safari和IE按以下格式发送url:

 http://localhost:8080/rest/123/Product Line A/[Product Type B] 

REST服务接受编码(Firefox)格式 – 有没有一种方法可以使所有浏览器保持一致?

提前致谢!

您可以使用javascript的encodeURI()函数将URL编码为“Firefox格式”。

以未编码forms传递[Product Type B]无效,因此浏览器对其进行的操作是未定义的。

在产品类型部件上执行encodeURIComponent()

我认为.serialize()将是jquery方法。

点击这里: http : //api.jquery.com/serialize/

还有一个jquery插件: http : //plugins.jquery.com/project/URLEncode

或者javascript方式… encodeURIComponent()

点击这里: http : //www.w3schools.com/jsref/jsref_encodeURI.asp

快速解决方法是在传递给$ .ajax之前对URL进行encodeURI() 。 您还可以使用瘦包装器替换$ .ajax函数,以便在传递给原始函数之前获取{}文字和encodeURI URL。