laravel 4: URL :: маршрут против jquery

(Как новый пользователь laravel) Я пытаюсь создать URL-адрес вызова ajax через URL-адрес laravel :: class:

$.ajax( {
    url: '{{ URL::route('getUser', ['3']) }}', 
    success: function(results) {
    alert(results);
    }
});

routes.php:

Route::get('admin/getUser/{user_id}', array(
   'as' => 'getUser', 
   'uses' => 'AdminController@getUser'
));

Вместо жестко запрограммированного 3 этот параметр должен поступать из jquery (например, $(this).attr('user_id')).

Может ли кто-нибудь сказать мне, как динамически создавать URL-адрес?

Похоже, что из-за определения маршрута функции URL::route требуется жестко запрограммированный параметр или как переменная php.

Надеюсь, это +/- ясно ...

В любом случае спасибо за помощь!


person user2482384    schedule 13.06.2013    source источник


Ответы (3)


Вы можете сохранить URL-адрес в чистоте и передать переменную как данные в своем вызове ajax.

var urlGetUser = "{{ URL::route('getUser') }}",
    userId = $(this).attr('user_id');

$.ajax({
  type: "POST",
  url: urlGetUser,
  data: { id: userId }
}).done(function( msg ) {
  alert( msg );
});

Таким образом, вам не придется создавать вызовы ajax для каждого возможного идентификатора пользователя. Что-то также предлагают оба других текущих решения.

Отказ от ответственности: Коллега спрашивающего, не имеющий абсолютно никакого опыта работы с Laravel: /

person jeroentbt    schedule 17.06.2013
comment
Спасибо, Джерун. Я думаю, что $ ajax type = POST - самое чистое решение! - person user2482384; 17.06.2013
comment
re: 'Таким образом, вам не придется создавать вызовы ajax для каждого возможного идентификатора пользователя' - ›Я знал о жестко запрограммированном идентификаторе ;-) В любом случае, еще раз спасибо! - person user2482384; 17.06.2013

Поскольку PHP фактически обрабатывает файл перед его передачей в браузер, может быть действительно невозможно динамически использовать переменную php напрямую, но есть способ обойти это. Это может сработать ТОЛЬКО в том случае, если вы не привели параметр маршрута user_id к определенному определению.

// Add a placeholder which we'll use jQuery to swap out later
urlTo = "{{ URL::route('getUser', ['%userid%']) }}";

// swap out the placeholder dynamically using jQuery
urlTo = urlTo.replace('%userid%', $('#someElement').attr('user_id'));

$.ajax({
    url: urlTo, 
    success: function(results) {
        alert(results);
    }
});

Мы здесь создали заполнитель в нашем URL-адресе, созданном на основе маршрута, поэтому у нас, вероятно, будет URL-адрес типа http://localhost/app/profile/%userid% после завершения обработки PHP. Затем мы используем jQuery для замены заполнителя на наше фактическое динамическое значение.

person Neo Ighodaro    schedule 14.06.2013

Я использовал URL :: to () для своих вызовов Ajax. У меня были проблемы. Но если вы используете URL :: to (), вы сможете использовать переменные javascript. попробуй это:

$id = 3;
"{{URL::to('getUser/'".$id.")}}"

Надеюсь, это поможет, я тоже новичок. если вы найдете лучший способ сделать это круто, дайте мне знать;)

person Jason Spick    schedule 13.06.2013
comment
1. вы пропустили скобку 2. он не работает: ошибка синтаксического анализа: ошибка синтаксиса, неожиданный '+ id +' (T_CONSTANT_ENCAPSED_STRING), ожидание ',' или ')' - person Marek Bernád; 17.04.2017
comment
@ MarekBernád Вы правы. Я смешал синтаксис Javascript с php. Я отредактировал ответ. - person Jason Spick; 17.04.2017