4

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

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

路线.php:

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

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

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

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

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

无论如何感谢您的帮助!

4

3 回答 3

2

您可以保持 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 );
});

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

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

于 2013-06-17T08:14:18.070 回答
1

I've been using URL::to() for my Ajax calls. I've had problems to. But if you do use URL::to() you would be able to use javascript variables. try this:

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

Hope this helps, I'm new too. if you find a better way to do this awesome, let me know ;)

于 2013-06-13T13:47:11.000 回答
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 中创建一个占位符,因此我们可能会http://localhost/app/profile/%userid%在 PHP 完成处理之后拥有一个 URL。然后我们使用 jQuery 将占位符替换为我们的实际动态值。

于 2013-06-14T03:38:16.833 回答