0

jQuery ajax を使用して Web API メソッドを呼び出そうとしています。非常に基本的な方法を使用すると、適切な応答を返す ajax 呼び出しを取得できません。私はそれが応答かもしれないと考えて複数の方法を試しましたが、うまくいきませんでした。

これが私のコードです:

Web API

 // POST api/token
 public Token Post(User user)
 {
      throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.Unauthorized));  
 }

jQuery

  $.ajax({
        url: http://myUrl/api/token',
        type: 'POST',
        dataType: 'json',
        data: data,
        success: function () {
        },
        error: function (request, status, error) {
            alert(request.status);
            //request.status is always 0, I am expecting 401
        }
    });

私も使用してみました:

 .done(function() {
 })
 .fail(function(data) {
     //status code is always 0 instead of expected 401
  });

と:

 statusCode: {
      401: function () {
      //Never gets hit
      },
 }

FF で Firebug を使用して応答を確認すると、コンソールに正しい応答が表示されます。

 POST http://myUrl/api/token 401 Unauthorized

そのため、satus コードが常に 0 であるか、401 statusCode: がヒットすることはありません。クライアントで 401 エラーを適切にキャッチするには、何が間違っているのでしょうか。また、何をする必要がありますか?

4

4 に答える 4

1

私はついに問題を見つけました。$.ajax は、クロス ドメイン呼び出しを好みませんでした。REST POST メソッドの応答ヘッダーに「Access-Control-Allow-Origin: *」を追加すると、正しいデータを取得できました。

于 2013-09-09T14:58:24.987 に答える
0

これを試して:

public Token Post([forms body]User user)
{
  throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.Unauthorized));  
 }
于 2013-10-24T09:08:56.087 に答える
0

これを試して:

public Token Post(User user)
{
    Request.CreateResponse(HttpStatusCode.Unauthorized);
}
于 2013-08-31T19:17:45.603 に答える