如何在laravel js文件中添加ajax URL?

时间:2014-03-14 19:05:07

标签: ajax laravel laravel-4

我正在为我在Laravel建立的网站构建商店定位器。由于刀片文件调用js文件,因此它位于assests文件夹中。它无法识别像这样的网址

$.ajax({
    url: '{{ URL::action('getLocation') }}',
    // ...
});

这就是我的route.php

Route::post('/getLocation', array('as'=>'getLocation','uses'=>'FrontController@getLocation'));

所以它找不到文件。如何在ajax URL中调用此函数?

6 个答案:

答案 0 :(得分:3)

以下是我将如何实现这一目标的演示

  

我可能会迟到。这只是一个示例代码,以帮助理解人   谁访问这个问题。希望这有助于任何访问此处的人。

在我的 routes.php 中我定义了一条命名路由

Route::post('getLocation',array(
    'as'=>'getLocation','uses'=>'FrontController@getLocation')
);

在我的 somehtmlform.blade.php 文件中将名称路由添加为data-url

{!! Form::open() !!}
{!! Form::text('input-name',null,array('class'=>'form-control search-input','data-url'=> URL::route("getLocation") ))
{!! Form::close() !!}

我的 search.js 文件捕获了数据网址并将其用作帖子网址

$('.search-input').each(function(){
  $(this).on('change',function (e) {
      search(this)
  });
});

function search(self) {
    var query = $(self).val();
    $.ajax({
        url: $(self).attr('data-url'),
        type: 'post',
        data: {'q':query, '_token': $('input[name=_token]').val()},
        success: function(data){
          console.log(data);        
        },
        error: function(data){
            // Not found
        }
    });
}

答案 1 :(得分:2)

你可以使用这个package,它几​​乎提供了所有可以在js文件中使用的laravel辅助函数。

答案 2 :(得分:1)

你可以试试这个:

// Add this in your filtes.php file (feel free to store where you like)
View::composer('layouts.master', function($view) {
    $ajaxUrl = json_encode(array('url' => URL::action('getLocation')));
    $view->with('ajax', $ajaxUrl);
});

master.blade.php个文件的master layout<head></head>部分中添加此内容(将其放在js文件之前):

<script>var ajax = {{ $ajax or 'undefined' }}</script>

现在您可以将其用作:

// ajax.url
console.log(ajax.url);

请在此处阅读similar thing.

答案 3 :(得分:0)

看起来您使用了错误的方法来生成网址。 尝试从URL::action()切换到URL::route()

URL::action()用于生成给定控制器操作的URL,但是您需要像这样编写它:

URL::action('FrontController@getLocation')

URL :: route()使用“as”=&gt;生成路由定义中路由的路由的URL。 “routeName”。在你的情况下:

URL::route('getLocation')

希望这有帮助!

答案 4 :(得分:0)

如果从.js文件中调用ajax函数,
尝试将刀片部件'{{ URL::action('getLocation') }}'更改为'/getLocation'
或者传递一个完整的网址,例如:'http://domain.com/getLocation',它应该有用。

答案 5 :(得分:0)

在js文件中,您不能将Url :: action用于路由 只是做

&#13;
&#13;
url:"/getLocation"
&#13;
&#13;
&#13;