web-dev-qa-db-ja.com

AjaxリクエストはHTTPエラー500を返します。MVCと$ .ajaxをPOSTで呼び出しますか?

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

私の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 consoleを使用すると、これらは応答からの応答ヘッダーです。

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

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

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

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

newParentItemId:null

newPreviousItemId:null

どちらが正しい。

ContentTypeをapplication/jsonに設定して、この質問のように従来の= trueを試しました: "application/json; charset = utf-8"でmvcにajaxポストを送信すると、vs Webデベロッパーサーバーからエラー500が返されます

同じエラー。

25
SventoryMang

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

74
SventoryMang

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

1
Ibrahim Amer

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

私の問題は、呼び出しているコントローラーアクションがパーシャルビューアクションの結果とPartialView .cshtmlファイルはサーバーに公開されていませんでした(公開時にVisual Studioプロジェクトに "含まれていませんでした")。

1
Chris Hammond

updatedItemが成功する必要がない場合は、単純な変数を返すだけで返されません

0
RafiO