Laravel Ajax通过整个页面调用

时间:2017-10-06 08:34:00

标签: javascript php jquery ajax laravel

我正在尝试通过我的整个应用程序运行Ajax调用,它将更新导航。在某些页面上它可以正常工作,但在其他页面上却没有,我怎样才能解决这个问题并使其全局化呢。

我使用Laravel作为php框架。

start=1

在我的layouts / app.blade.php中我包含了像这样的js文件

1

liveUpdater ajax功能

# Middleware group if user is logged in
Route::group(['middleware' => 'auth'], function () {
     # Notifications
    Route::group(['prefix' => 'notification', 'as' => 'notification.'], function () {
        Route::post('number', ['as' => 'number', 'uses' => 'NotificationController@number']);
    });
    Route::group(['prefix' => 'relation', 'as' => 'relation.'], function () {
        Route::get('show/{id}', ['as' => 'show', 'uses' => 'RelationController@show']);
    });
});

网址http://localhost/myApp/public/notification/all会返回成功消息。

但是像这样的网址http://localhost/myApp/public/relation/show/1返回一条错误消息:

<script src="{{ asset('js/liveUpdater.js') }}"></script>
@yield('javascript')

3 个答案:

答案 0 :(得分:1)

您使用notification为路线添加前缀,以便您的ajax请求指向notification/number

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content'),
    }
});
$.ajax({
    url: 'notification/number',
    type: 'post',
    success: function(data) {
        $('#number-of-notifications').text(data.unread);
    },
    error: function(data) {
        console.log('error number ' + data.data);
    }
});

另外我认为别名(在小组中)不会有帮助,所以我认为(为简单起见)你可以:

Route::group(['middleware' => 'auth'], function () {
     # Notifications
    Route::group(['prefix' => 'notification'], function () {
        Route::post('number', 'NotificationController@number']);
    });
});

Routing groups docs

答案 1 :(得分:0)

您需要为每个网址路径定义路径路径和相应的控制器方法,例如关系/ show和notification / all:

<bean id="mysqlService" lazy-init="true" alias="mysqlrepoAlias"
 class="ee3.demo.repositories.mysql.UserRepository"/>

<bean id="mongorepoService" lazy-init="true"  alias="mongorepoAlias"class="ee3.demo.repositories.mysql.UserRepository"/>

答案 2 :(得分:0)

在ajax中的请求方法中出错。它应该是类型:&#34; GET&#34;,或者在你的web.php中,例如Route :: post(&#39; show / {id}&#39;而不是Route :: get(&#39;显示/ {ID}&#39;

你的请求方法不匹配为什么它抛出405