【问题标题】:laravel 4: URL::route vs jquerylaravel 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 变量。

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

还是谢谢你的帮助!

【问题讨论】:

    标签: jquery laravel laravel-4


    【解决方案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 混合在一起。我编辑了答案。
      猜你喜欢
      • 1970-01-01
      • 2014-06-23
      • 2014-05-29
      • 2013-06-02
      • 1970-01-01
      • 2014-11-13
      • 1970-01-01
      • 2013-10-06
      • 1970-01-01
      相关资源
      最近更新 更多