この Laravel アプリケーションで AJAX 呼び出しが失敗するのはなぜですか?
P粉779565855
P粉779565855 2024-02-17 12:19:10
0
2
261

私は Laravel 8 で ブログ アプリケーション を開発しています。

ArticlesController コントローラー 単一の記事とその Comments:

を表示するこのメソッドがあります。 リーリー

ビューには次のようなコメントのリストがあります:

リーリー

記事に関連するルート:

リーリー ###目標###

コメントのページネーションを「無限スクロール」に置き換えたいです。

この目的のために、私は次のものを持っています:

リーリー ###質問###

https://larablog.com/show/deserunt-qui-exeritationem?page=2

にアクセスすると、ページ 2 のコメントが正しく表示され、Chrome コンソールにはこれらの

500 (内部) が表示されます。サーバー エラー)

エラー:

リーリー エラーは、ArticlesController の 70 行目のエラー メッセージまで 追跡できます - $article = Article::firstWhere('slug', $slug):

非オブジェクトの属性「id」を取得してみます。 これは奇妙です。なぜなら

$article = Article::firstWhere('slug', $slug)

は Ajax

なしでも正常に動作するからです。
###質問###

このエラーの原因は何ですか? 最も簡単な修正は何ですか?

P粉779565855
P粉779565855

全員に返信(2)
P粉253518620

firstWhere 配信条件を満たす最初のレコードを返します。デフォルトは null です。それで、あなたの行

リーリー

slug$slug に一致する最初の記事を返します。そのようなレコードが存在しない場合は null を返します。さて、$article->id を引用するときは常に、$article が正しい Article であると想定し、その の値を知りたいと考えます。 ID の。一致する記事がない場合は、発生したエラーが発生します。

したがって、

$article が初期化された後に empty($article) をチェックし、実際に空である場合にエッジ ケースを処理することが賢明です。

いいねを押す +0
P粉121447292

これが私の解決策です:

この新しいルートを routes\web.php に追加しました:

リーリー

記事内コントローラー:

リーリー

コメントが 10 件を超える場合にのみ Ajax スクリプトをロードします:

リーリー ###脚本:### リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!