首页 > 解决方案 > Livewire - Ajax 没有被解雇

问题描述

我有一个 Laravel Livewire 组件,并且没有触发 Ajax 事件。

在此处输入图像描述

我有一个搜索输入文件,它向我的组件发送搜索字符串。没有 Ajax 事件被触发,结果也没有得到更新。

注意:分页 Livewire 控件也不起作用 - Laravel 分页确实起作用,但是当我使用UsePaginationtrait 时,分页不起作用。没有任何网络调用,也没有 Javascript 错误。

刀片组件:

<input type="text" class="min-w-full" placeholder="Search" wire:model="search" />

零件:

  public function render()
    {
        return view('livewire.manage-sites', [
            'sites' => app(WebsiteRepository::class)->query()->where('organization_name', 'like', '%' . $this->search . '%')->paginate(10),
        ])->extends('layouts.management');

    }

样式包含在基本布局页面中:

<livewire:styles />

并且脚本包含在正文中:

<body>
    @yield('body')

    <livewire:scripts />
    <script src="{{ url(mix('js/app.js')) }}"></script>

    @stack('scripts')

</body>

该组件通过 web.php 中的路由定义包含在内。

Route::get('manage-sites', \App\Http\Livewire\ManageSites::class)
        ->name('manage.sites.index');

作曲家的相关作品:

"php": "^7.2.5",
"blade-ui-kit/blade-ui-kit": "^0.1.1",
"fideloper/proxy": "^4.2",
"fruitcake/laravel-cors": "^2.0",
"guzzlehttp/guzzle": "^6.3",
"hyn/multi-tenant": "^5.6",
"laravel-frontend-presets/tall": "^1.7",
"laravel/framework": "^7.24",
"laravel/tinker": "^2.0",
"league/flysystem-aws-s3-v3": "^1.0",
"livewire/livewire": "^2.0",
"sentry/sentry-laravel": "^1.8",
"spatie/laravel-activitylog": "^3.14",
"spatie/laravel-medialibrary": "^8.0.0",
"spatie/laravel-permission": "^3.16"

标签: laravellaravel-livewire

解决方案


您正在使用错误的路径调用 javascript

<script src="{{ url(mix('js/app.js')) }}"></script>

  • url('app.js')会给你完整的网址http://localhost/ressource.js
  • mix('app.js')将为您提供带有适当哈希的完整网址http://localhost/ressource.js?id=1964becbdd96414518cd

两者都使用可能会给你一个奇怪的网址。我建议使用它,mix因为它会版本化你的 JS 并避免你在生产中缓存的麻烦。

<script src="{{ mix('js/app.js') }}"></script>

推荐阅读