ホームページ  >  に質問  >  本文

この Laravel アプリケーションで AJAX 呼び出しが失敗するのはなぜですか?

私は 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粉779565855P粉779565855268日前310

全員に返信(2)返信します

  • P粉253518620

    P粉2535186202024-02-18 10:55:43

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

    リーリー

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

    したがって、

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

    返事
    0
  • P粉121447292

    P粉1214472922024-02-18 10:00:05

    これが私の解決策です:

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

    リーリー

    記事内コントローラー:

    リーリー

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

    リーリー ###脚本:### リーリー

    返事
    0
  • キャンセル返事