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

在 Laravel 路由上设置协议

我在 Laravel 中收到一个不寻常的 url 错误

如何在 Javascript Laravel Blade 中编写路由 URL?

错误-视图中未定义路由-> Laravel

如何在 laravel 5.8 中将变量传递给路由?