我正在将一些PHP代码转换为Ruby脚本,我试图从Javascript完全调用Rails函数的url,这与Rails应用程序本身无关。进一步解释说我在控制器foo中有一个rails函数bar(),可以从服务器的url访问。
http://localhost:3000/foo/bar?param1=asdf¶m2=word1;word2
当这是foo.php时,我只是这样做了:
xmlhttp = new XMLHttpRequest();
xmlhttp.open("post", "my.domain/foo.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("param1=asdf¶m2=word1;word2");
但要使用我的Rails代码,我必须这样做:
xmlhttp = new XMLHttpRequest();
xmlhttp.open("post", "my.domain/foo/bar?param1=asdf¶m2=word1;word2", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send();
哪个好,它正在向DB添加值,就像我想要的那样,但param2的条目只获得word1。它到达分号并忽略word2。我想这只是因为这就是URL处理分号等的方式。我想我可以通过把我的post params放到XMLHttpRequest()的send函数中来表现得像以前那样但是这样做无效。在RoR的情况下,还有另一种/更好的方式来进行此类调用吗?
答案 0 :(得分:1)
您必须对参数值进行编码(以及名称,如果您不确定它们是否干净):
xmlhttp.open("post", "my.domain/foo/bar?param1=" + encodeURIComponent("asdf") + "¶m2=" + encodeURIComponent("word1;word2"), true);
显然,如果参数值是变量(例如输入字段的“value”属性),那么你可以插入它而不是上面的“word1; word2”常量: - )
编码后分号将显示为“%3B”。
哦,这不是PHP与Rails的关系 - 它只是URL中“GET”参数的基本内容。