laravel 4:URL :: route vs jquery

时间:2013-06-13 13:28:21

标签: jquery laravel laravel-4

(作为新的laravel用户)我正在尝试通过laravel URL :: class构建一个ajax调用url:

$.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'
));

此参数应来自jquery(例如3),而不是硬编码$(this).attr('user_id')

有人可以告诉我如何动态创建URL吗?

似乎由于路由定义,URL::route函数需要参数硬编码或php变量。

我希望这是+/-清楚......

无论如何,感谢您的帮助!

3 个答案:

答案 0 :(得分:2)

您可以保持网址清洁并将变量作为ajax调用中的数据传递。

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

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

这样您就不必为每个可能的用户ID创建ajax调用。其他当前解决方案也提供了一些东西。

免责声明:在Laravel完全没有经验的提问者同事:/

答案 1 :(得分:1)

我一直在使用URL :: to()来进行Ajax调用。我遇到了问题。但是,如果您使用URL :: to(),您将能够使用javascript变量。 试试这个:

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

希望这有帮助,我也是新人。如果你找到一个更好的方法来做这个真棒,请告诉我;)

答案 2 :(得分:1)

因为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中创建一个占位符,这样在PHP完成处理后我们可能会有一个像http://localhost/app/profile/%userid%这样的URL。然后我们使用jQuery将占位符替换为我们的实际动态值。