28

私はこれについていくつかのスレッドを見てきました、そして私はすべての答えを試しました(ASP.NET MVC JsonResult return 500

私のajaxリクエストは500内部エラーを返しています。私がデバッグした場合、私は自分の行動にさえ到達しません。

これが私のajax呼び出しです:

$.ajax({
                    url: '@Url.Action("UpdateSortOrder", "FormItems")',
                    data: { itemToUpdateId: item.attr("id"), newParentItemId: parentItemId, newPreviousItemId: previousItemId },
                    type: 'POST',
                    success: function (data) {
                        console.log(data);
                    },
                    error: function (xhr, status, exception) {
                        console.log("Error: " + exception + ", Status: " + status);
                    }
                });

そして私の行動:

[HttpPost]
    public ActionResult UpdateSortOrder(Guid itemToUpdateId, Guid newParentItemId, Guid newPreviousItemId)
    {
        FormItem updatedItem = _formItemService.GetOne(x => x.Id == itemToUpdateId);

        return Json(updatedItem, JsonRequestBehavior.DenyGet);
    }

Chromeコンソールを使用すると、これらは応答からの応答ヘッダーです。

HTTP / 1.1 500内部サーバーエラーCache-Control:private Content-Type:text / html; charset = utf-8サーバー:Microsoft-IIS / 7.5 X-AspNetMvc-バージョン:3.0 X-AspNet-バージョン:4.0.30319 X-Powered-By:ASP.NET日付:2012年12月18日火曜日21:53:41 GMTコンテンツ-長さ:17041

サーバーログにはサブステータスコードは表示されません。私がここで間違っていることについて何か考えはありますか?GETの代わりにPOSTを使用することを好みます。

フォームデータは次のように表示されます:

itemToUpdateId:18ac5399-342e-4a39-9da1-3281a89501df

newParentItemId:null

newPreviousItemId:null

どちらが正しい。

この質問のように、contentTypeをapplication/jsonおよびtraditional=trueに設定してみました:「application / json; charset =utf-8」を指定してajaxpostをmvcに送信すると、vsWeb開発者サーバーからエラー500が返されます

同じエラー。

4

4 に答える 4

80

さて、私は問題が何であるかを理解することができました、私のAJAX構文、あるいはアクションにさえ何も問題はありませんでした。返されたオブジェクトに循環参照が含まれているだけでした。[ネットワーク]タブの[POSTリクエスト]をクリックしてから[プレビュー]タブを表示すると、Chromeコンソールで実際のエラーを確認できました。これにより、実際のエラーメッセージが表示されました。

于 2012-12-18T22:51:49.537 に答える
2

古い投稿、代替回答...誰かがここにたどり着いた場合に備えて..

私の問題は、呼び出していたコントローラーアクションがPartial Viewアクションの結果を返し、PartialView.cshtmlファイルがサーバーに公開されていなかった(公開時にVisual Studioプロジェクトに「含まれていなかった」)という事実が原因でした。

于 2017-10-30T11:07:02.880 に答える
1

Fiddlerは、httpリクエストをキャッチするための優れたツールであり、クライアント側とサーバー側の間の応答をデバッグするのに非常に役立ちます。ブラウザで問題が疑われる場合はそれを開き、エラーが発生した場合はフィドルを開いてリクエストを選択し、その生の情報を表示します。

于 2015-12-20T14:41:56.563 に答える
0

正常にupdatedItemが必要ない場合は、単純な変数を返すだけで返されません。

于 2017-06-10T05:42:05.087 に答える