Вызов функции Rails из функции Javascript - PullRequest
2 голосов
/ 22 февраля 2011

Я конвертирую некоторый php-код в скрипт Ruby и пытаюсь полностью вызвать URL-адрес функции Rails из Javascript, который не связан с самим приложением Rails.Чтобы объяснить далее, скажем, у меня есть функция rails bar () в контроллере foo, которая доступна из URL сервера.

http://localhost:3000/foo/bar?param1=asdf&param2=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&param2=word1;word2");

Но чтобы заставить его работать с моим кодом Rails, мне нужно сделать это:

xmlhttp = new XMLHttpRequest();
xmlhttp.open("post", "my.domain/foo/bar?param1=asdf&param2=word1;word2", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send();

Это нормально, это добавление значений в БД, как я хочу, но запись для param2 получает только word1.Он достигает точки с запятой и игнорирует слово2.Я полагаю, что это просто потому, что URL обрабатывает точки с запятой и т. Д. Я полагаю, что я мог бы заставить его вести себя так, как когда-то, помещая мои параметры post в функцию send XMLHttpRequest (), но это не работает.Есть ли другой / лучший способ сделать такой звонок в случае RoR?

1 Ответ

1 голос
/ 22 февраля 2011

Вы должны закодировать значения параметров (и имена, если вы не уверены, что они будут чистыми):

xmlhttp.open("post", "my.domain/foo/bar?param1=" + encodeURIComponent("asdf") + "&param2=" + encodeURIComponent("word1;word2"), true);

Очевидно, что если значения параметров являются переменными (например, из атрибутов "value" полей ввода), вы бы подключили это вместо констант "word1; word2" в приведенном выше примере: -)

После кодировки точка с запятой будет выглядеть как "% 3B".

О, и это не PHP против Rails - это просто базовая вещь с параметрами "GET" в URL.

...