0

正常に動作している [FromBody] を使用して、MVC ベースの Web API にいくつかの文字列を投稿しています。データベースにデータを追加しています。私のコントローラーのアクションメソッドのタイプは HttpResponseMessage で、この応答を返しています

HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, "value"); 
return response;

しかし、成功ではなくエラーイベントが発生しています。

これがajax呼び出しです。

$.ajax({
    type: 'POST',
    url: 'http://businessworxapi.azurewebsites.net/api/SaveTemplate',
    contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
    dataType: "text json",
    data: "RetailerID=" + encodeURIComponent(retailerid) + "&SvgContent=" +
            encodeURIComponent(stringsvg) + "&Description=" +
            encodeURIComponent(Description) + "&TemplateName=" +
            encodeURIComponent(Name),
    beforeSend: function () {
    },
    success: function (response) {
        alert("Added");
    },
    error: function (xhr, ajaxOptions, thrownError) {
        alert(xhr.responseText);
    }
});

この問題を解決するために何か提案してください。

4

1 に答える 1

0

私はこの質問の解決策を見つけました。2つのことを設定する必要があります。最初に、MVC Web Api の web.config でカスタム ヘッダーの値、つまり Access-Control-Allow-Origin を設定します (値は、API が呼び出される元の URL である必要があります)。そして2つ目はもっと重要です。ajax呼び出しの「データ型」は「json」であるため、APIからの有効なJSON結果が期待されていましたが、APIから返される結果は、コード200と文字列「値」を持つHTTPResponseMessageです。エラーが解析エラーであることがわかりました。したがって、ここでは、文字列「値」の代わりに有効な json オブジェクトを返しました。

HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK , new { responseValue = "Value" });
return response;

それは私にとってはうまくいき、ajax呼び出しの成功イベントが発生しました。ビンゴ:)

于 2016-01-21T15:57:48.107 に答える