2012-12-18 9 views
23

これについていくつかのスレッドがありましたが、すべての回答を試しました(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); 
        } 
       }); 

そして、私のアクション:

HTTP/1.1:クロームコンソールを使用して

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

     return Json(updatedItem, JsonRequestBehavior.DenyGet); 
    } 

、これらは、返信からのレスポンスヘッダがあります500内部サーバー・エラー キャッシュ制御:専用 コンテンツ・タイプ: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、2012年12月18日21 :53:41 GMT コンテンツの長さ:17041

サーバーログにはサブステータスコードは表示されません。私がここで間違っていることは何ですか?私はGETではなくPOSTを使いたいと思っています。

フォームデータとして示されている:

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

newParentItemId:ヌル

newPreviousItemId:ヌル

正しい。私はこの質問のようにアプリケーション/ JSONと=伝統的な真のcontentTypeの設定しようとしました

Sending ajax post to mvc with "application/json; charset=utf-8" returns error 500 from vs web developer server

同じエラー。

+3

フィドラーを使用して生のPOSTを見て、ワイヤをどのように通過しているのか見てみましたか? –

+1

ルートの設定方法を共有できますか? – kabaros

+0

ルートは機能していますが、現在はエリアを追加してデフォルトルートルールを使用しています。ビューを返すようにアクションを変更してURLを入力すると機能し、ルートが正しく処理されています。 – SventoryMang

答えて

59

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

+2

[ネットワーク]タブ> [詳細]> [応答本文]を使用してIE11開発ツールで同様にトラブルシューティングを実行できました。 –

+0

まだ問題を抱えている人は、[解決策](http://stackoverflow.com/a/16916600/4896260)を参照してください。これは、Fiddlerなどが提供できなかったより詳細なエラーを提供します。 – usr4896260

1

Fiddlerは、クライアント側とサーバー側の間の応答をデバッグするのに非常に役立つhttp要求をキャッチするための優れたツールです。あなたのブラウザで問題が疑われているときにオープンするだけで、エラーが開いてフィドラーを開いてリクエストを選択してから、未処理の情報を表示するだけです。

0

あなたが成功にupdatedItemを必要としないならば、誰かがここで終わる念のために...それだけで単純な変数

1

旧ポスト、代替答えを返す返しません。..

私の問題は、私が呼び出していたコントローラーのアクションが部分的な表示のアクション結果を返し、PartialView .cshtmlファイルがサーバーに公開されていないことが原因で発生しました(公開時にVisual Studioプロジェクトにwasnt "included" 。

関連する問題