3

簡単なことのように思えますが、私はほとんど頼りなく、一日中ウェブ中の投稿を探していました! 助けてください。MVCコントローラーに投稿する簡単なリクエストがあります...

 $(document).ready(function () {
    $('#json_request').on("click", function () {
        // send request to server for menu json data
        $.ajax({
            type: "POST", 
            url: location.protocol + "//" + location.host + "/Tablet/Menu",
            data: { restaurantId: $('#restaurantId option:selected').val(), mealSessionId: $('#mealSessionId option:selected').val() },
            success: function (menuData) {alert(menuData); },
            error: function () { alert("failed"); }
        });
    });
});

リクエストがコントローラに届かない! リクエストを Html フォームとして投稿すると、アプリは正常に動作します。Visual Studio Development Server でも問題なく動作します。IIS 7.0 / ASP.NET / MVC 4 で 404 エラーが発生します。おそらく、contentType: application/x-www-form-urlencoded が http-protocol フィルターを通過しません。それらを具体的に設定する必要がありますか?どのように?ご協力いただきありがとうございます。リクエストを json として送信していないため、contentType: application/json は試していません。

コントローラー/アクション:

[HttpPost]
    public ActionResult Menu(short restaurantId, short mealSessionId)
    {
        try
        {
            MenuInput menuInput = new MenuInput(restaurantId, mealSessionId);
            menuInput.LoadMenu();
            if (Request.IsAjaxRequest())
            {
                MemoryStream ms = new MemoryStream();
                menuInput.AsJson(ms);
                string jsonString = Encoding.UTF8.GetString(ms.ToArray());
                JsonResult result = Json(jsonString, "text/x-json");
                ms.Close();
                return result;
            }
            else
            {
                return View("MenuInformation", menuInput);
            }
        }
        catch (Exception ex)
        {
            System.Console.Write(ex.ToString());
            return View();
        }
    }
4

0 に答える 0