【发布时间】:2011-10-11 21:30:38
【问题描述】:
快速背景 -
我正在对我编写的返回 JSON 响应的服务进行 jQuery ajax 调用。该服务接受网站 URL(即 www.google.com、www.xyz.com/abc123)。请求格式如下:
http://www.mysite.com/[url]
... 其中 [url] 是用户提供的 URL(同样,类似于 www.google.com/abc)
我需要对参数进行 URL 编码,因为 mysite.com/www.google.com 给了我错误。
我的问题是,所有标准的 javascript 编码功能实际上并未对 URL 进行编码。
一个例子:
<html>
<head>
<script>
document.write("encodeURIComponent = " + encodeURIComponent("www.google.com") + "<br />");
document.write("encodeURI = " + encodeURI("www.google.com") + "<br />");
document.write("escape = " + escape("www.google.com"));
</script>
</head>
<body>
</body>
...具有以下输出:
encodeURIComponent = www.google.com
encodeURI = www.google.com
escape = www.google.com
使用 JavaScript/jQuery 实现此目的的正确方法是什么?
我认为这无关紧要,但以防万一,这是一个 Rails 3.0.7 应用程序。
编辑了解更多详情
如果 www.google.com 已经进行了 URL 编码,并且我的 URL (www.mysite.com/www.google.com) 中的句点正常,为什么会出现此错误?
来自 Chrome 开发工具:
GET http://localhost:3000/s/www.google.com 404 (Not Found)
我的 jQuery sn-p:
$.getJSON("http://localhost:3000/s/" + encodeURI($("#txtURL").val()), function(data) {
alert(data.result.url);
});
【问题讨论】:
-
像 id=[url] 那样做会不会更容易
-
http://mysite.com/www.google.com是一个完全有效的 URL。 -
请查看我的编辑,为我的问题添加更多细节!
-
re:编辑 - 你得到一个 404,因为它正在寻找一个名为
www.google.com的目录或文件名
标签: javascript jquery html ruby-on-rails ajax