(作为新的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变量。
我希望这是+/-清楚......
无论如何,感谢您的帮助!
答案 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将占位符替换为我们的实际动态值。