2012-04-24 2 views
3

私はPhoneGapを使用してAndroidアプリを構築しています。 jQueryまたはZeptoを使用して、$ .ajax呼び出しを使用してWebサイトAPIを呼び出すことができます。しかし、Webサイトが401(無許可)応答を返した場合、ajax呼び出しからのコールバックはないようです。「成功」、「エラー」、「完了」のいずれも呼び出されません。私はZeptoの1.0rc1および/またはPhoneGapの1.6.1とjQueryの1.7.2を使用しています200または500

応答があるときに、同じコードが正常に動作することを

注意。

function make_base_auth(user, password) { 
    var tok = user + ':' + password; 
    var hash = btoa(tok); 
    return "Basic " + hash; 
} 

$('#button').on('touchstart', function() { 
    console.log("UPLOAD --- "); 
    $.ajax({ 
     url: 'https://mywebsite/api/v1.0/test/?ts=' + new Date().getTime(), 
     type: 'GET', 
     beforeSend: function (xhr){ 
      xhr.setRequestHeader('Authorization', make_base_auth('username', 'password')); 
     }, 
     success: function(data, status, xhr) { 
      console.log("AJAX: SUCCESS: " + data); 
      $('h1').text("AJAX!!"); 
     }, 
     error: function(xhr, errortype, error) { 
      console.log("AJAX: FAIL: " + errortype + " - " + error); 
      $('h1').text("AJAX FAIL"); 
     }, 
     complete: function() { 
      console.log("--- Complete"); 
     } 
    }); 
    return false; 
}); 

答えて

-2

ダウングレードphonegap。はい。あなたはその権利を読んでいます。

私は試しました1.4.1:うまくいかなかった。

私は1.3.0を試しました:作品。

だから、そうです。

0

私はちょうど同じ問題を抱えていました。私はHTTP 401背中を取得し、エラーコールバックが{"readyState":0,"status":0,"statusText":"timeout"}と呼ばれ

$.ajax({ 
    ... 
    timeout: 5000, // Some timeout value that makes sense 
    ... 
}); 

を使用する場合。その場合、あなたはまた、あなたが{"readyState":4,"responseText":"<html>...</html>","status":401,"statusText":"Unauthorized"}バックのようなものを取得します

$.ajax({ 
    ... 
    async: false, // :-(
    ... 
}); 

とあなたのエラーコールバックを使用することができ、実際のエラーはHTTP 401

であることを推測しなければならないでしょう。

関連する問題