Я впервые работаю с Laravel 5.1 и не могу понять, почему я получаю 404 при вызове ajax, который передает URL-адрес PHP-скрипту сервера в качестве параметра.
Я выполняю вызов Ajax, который обрабатывается маршрутом следующим образом:
Route::get('ajax/{act}', ['uses' => 'AjaxController@helpers', 'as' => 'ajax.helpers']);
Я хочу, чтобы переменная {act}
содержала набор пар ключ/значение, которые я передаю. Я расшифровываю их в PHP на стороне сервера. PHP-скрипт Ajax содержит множество помощников, и я не хочу создавать маршрут Laravel для каждого.
В моем приложении пользователь вводит URL-адрес в поле формы, которое я фиксирую в переменной с именем website
.
Мой вызов ajax должен принять:
var url = '/ajax/act=url&u=' + website;
Я делаю это, чтобы создать URL-адрес, который затем передаю вызову jQuery $.getJSON
:
var url = '/ajax/act=url&&u=' + encodeURIComponent(website);
Я бы ожидал, что функция encodeURIcompponent()
сделает эту работу, но она возвращает 404
, когда любой из параметров содержит /
символов до encodeURIComponent()
. Мой базовый URL-адрес отлично работает без дополнительного URL-адреса в качестве параметра.
Но передавая URL-адрес как значение переменной, он выдает 404.
Вот как выглядит URL-адрес в вызове ajax, который возвращает 404:
http://my.app/ajax/act=url&u=http%3A%2F%2Fgoogle.com
Этот URL работает отлично (я удалил //
из http://google.com
:
http://my.app/ajax/act=url&u=http%3Agoogle.com
Это также дает сбой, когда в переменной url есть дополнительные элементы пути, поскольку она содержит дополнительные символы /
, например:
http://google.com/subfolder
Как передать полный URL-адрес в качестве параметра в вызове ajax? Спасибо!