laravel 4: URL::route vs jquery
Posted
技术标签:
【中文标题】laravel 4: URL::route vs jquery【英文标题】: 【发布时间】:2013-06-09 21:53:24 【问题描述】:(作为新的 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(例如$(this).attr('user_id')
),而不是硬编码的3
。
谁能告诉我如何动态创建 URL?
似乎由于路由定义,URL::route
函数需要硬编码参数或作为 php 变量。
我希望这是 +/- 清楚...
还是谢谢你的帮助!
【问题讨论】:
【参考方案1】:您可以保持 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 经验的提问者的同事:/
【讨论】:
谢谢杰罗恩。我想 $ajax type="POST" 是最干净的解决方案! re: '这样你就不必为每个可能的用户 ID 创建 ajax 调用' -> 我知道硬编码的 ID ;-) 无论如何,再次感谢!【参考方案2】:因为 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 将占位符替换为我们的实际动态值。
【讨论】:
【参考方案3】:我一直在使用 URL::to() 进行 Ajax 调用。我有问题。但是,如果您确实使用 URL::to() 您将能够使用 javascript 变量。 试试这个:
$id = 3;
"URL::to('getUser/'".$id.")"
希望这会有所帮助,我也是新手。如果您找到更好的方法来做到这一点,请告诉我;)
【讨论】:
1.你错过了括号 2。它不起作用:解析错误:语法错误,意外的 '"+id+"' (T_CONSTANT_ENCAPSED_STRING),期待 ',' 或 ')' @MarekBernád 你是对的。我将 Javascript 语法与 php 混合在一起。我编辑了答案。以上是关于laravel 4: URL::route vs jquery的主要内容,如果未能解决你的问题,请参考以下文章
Laravel Redirect::route() 在 vhost 上转到错误的 url