0

非同期リクエストが送信された場合、エラー コールバックは機能しませんが、成功は機能します。Android とブラウザで問題なく動作します。iPhoneでは、同期リクエストで機能します。これが私のコードです。他の API は問題なく動作します。

$.ajax({
        type: 'POST',
        url: "https://api.cloud.appcelerator.com/v1/users/login.json?key=xxxxxxxxx",
        data: {
            "login": useremail,
            "password": password
        },
        success: function (resp) {                                               
            console.log(resp);
            console.log('User logged-in successfully');               
        },
        error: function (e) {
            console.log(e)
        }
    });

API は、正しい電子メールとパスワードの場合はステータス コード 200 を返しますが、正しくない場合は 401 を返すため、ステータス コードが 200 の場合は正常に機能し、成功の応答が得られます。

4

1 に答える 1

1

これは、Cordova + iOS + jQuery の組み合わせで非常に一般的な問題のようです。

この 401 エラー応答処理の問題を解決する方法はいくつかあるようです。1 つは、AJAX 要求を作成してエラーを処理するときに、タイムアウト タイムアウト属性を追加することです。もう 1 つの方法は、HTTPS 経由でリクエストを送信し、401 エラーの場合にエラーの詳細を含む認証トークンを返すことで、サーバー側で処理することです。

詳細については、この投稿をご覧ください。

また、公式の Apache Cordova Bug Tracking System でこの欠陥がまだ未解決であることを確認できるため、現在、iOS でこれら 2 つのエラー (401 および 408 エラー) を区別することはできません。

于 2016-06-04T09:45:10.767 に答える