2012-04-24 6 views
3

에 대한 콜백을 실행하지 않습니다. PhoneGap을 사용하여 Android 앱을 구축 중입니다. jQuery 또는 Zepto를 사용하여 $ .ajax 호출을 사용하여 웹 사이트 API에 호출 할 수 있습니다. 그러나 웹 사이트가 401 (인증되지 않은) 응답을 반환하면 ajax 호출에서 콜백이없는 것 같습니다. "성공", "오류"또는 "완료"중 아무 것도 호출되지 않습니다. 내가 Zepto의 1.0rc1 및/또는 폰갭 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

다운 그레이드 폰 갭. 예. 당신은 그 권리를 읽었습니다.

1.4.1 시도 : 작동하지 않았습니다.

나는 1.3.0을 시도 : 작품.

그래, 그게.

0

방금 ​​같은 문제가있었습니다. 내가 HTTP 401 뒷면을 얻고 사용하는 경우

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

다음 오류 콜백은 {"readyState":0,"status":0,"statusText":"timeout"} 호출합니다. 이 경우 당신은 또한 당신이 {"readyState":4,"responseText":"<html>...</html>","status":401,"statusText":"Unauthorized"} 다시 같은 것을 얻을 것이다

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

및 오류 콜백을 사용할 수있는 실제 오류가 HTTP 401

것을 생각해야합니다.

관련 문제