2

私のASP.netmvc3プロジェクトでは、ajax呼び出しを使用して、コントローラーCompanyのcreateactionmethodにjsonデータを送信します。しかし、ajax呼び出しをデバッグすると、成功の結果ではなく、常にエラーの結果になります。

ajax呼び出し:

$.ajax({
            url: '/Company/Create',
            type: 'POST',
            data: JSON.stringify(CreateCompany),
            dataType: 'Json',
            contentType: 'application/json; charset=utf-8',
            success: function () {
                alert('ajax call successful');
            },
            error: function () {
                alert('ajax call not successful');
            }
        });

会社のコントローラーでの私の行動方法:

    [HttpPost]
    public ActionResult Create (Company company)
    {
        try
        {
            //Create company
            CompanyRepo.Create(company);
            return null;
        }
        catch
        {
            return View("Error");
        }
    }

私はすでにactionmethodをデバッグしましたが、彼は必要に応じてそれを完了します。したがって、ajax呼び出しで送信されるデータは処理され、データベースに書き込まれます。(アクションメソッドはキャッチ部分を使用しません)。

私のajax呼び出しがまだ「ajax呼び出しは成功しません」というメッセージを表示するのはなぜですか?

4

3 に答える 3

4

以前は、JSONの結果を返す際に同じ問題が発生していました。私がしたことは、dataTypeを "text json"に設定することです:))これで問題が解決しない場合は、エラーの詳細を取得して追加情報を取得してみてください。

$.ajax({
        url: '/Company/Create',
        type: 'POST',
        data: JSON.stringify(CreateCompany),
        dataType: 'text json',
        contentType: 'application/json; charset=utf-8',
        success: function () {
            alert('ajax call successful');
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            alert("XMLHttpRequest=" + XMLHttpRequest.responseText + "\ntextStatus=" + textStatus + "\nerrorThrown=" + errorThrown);
        }
    });

ところで:私はStackOverflowのどこかでこのソリューションを見つけました

于 2011-05-03T09:50:23.893 に答える
1

nullコントローラーアクションが成功した場合、なぜ戻ってくるのですか?たとえば、JSONオブジェクトのようなものを成功に戻します(特に、AJAXリクエストで、サーバーからのJSON応答を期待することを示したようにdataType: 'json'-設定を使用して-ちなみに小文字jにする必要があります):

return Json(new { success = true });
于 2011-05-03T09:44:57.470 に答える
0

これはもっと簡単ではないでしょうか:

$.post("/Company/Create", function (d) {
    if (d.Success) {
        alert("Yay!");
    } else {
        alert("Aww...");
    }
}, "json");

そしてあなたのコントローラーで。

[HttpPost]
public JsonResult Create(
    [Bind(...)] Company Company) { <- Should be binding
    if (this.ModelState.IsValid) { <- Should be checking the model state if its valid
        CompanyRepo.Create(Company);

        return this.Json(new {
            Success = true
        });
    };

    return this.Json(new {
        Success = false
    });
}
于 2011-05-03T10:02:20.980 に答える