2014-09-16 5 views
0

Mozilla의 개인 인증 (예 : browserid)을 구현하고 있습니다. 그래서, 나는 다음과 같은 onLogin()를 가지고jQuery ajax 호출이 PHP 페이지를 호출하지 않습니다.

"경고 ("다시로드 않습니다 ")"나는 일반적으로 window.location.reload() 호출이 거기에
function onLogin(pAssertion) { 
    var sPHPSessionID = $.cookies.get("PHPSESSID")+''; 
    var sFoolCache = new Date().getTime() + '' + Math.random(); 
    $.ajax(
     { 
     cache: false, 
     type: 'POST', 
     url: '/webservice.php?id=personaauth&u=i', 
     data: { assertion: pAssertion, PHPSESSID: sPHPSessionID, z: sFoolCache }, 
     success: function(res, status, xhr) { alert("do reload"); }, 
     error: function(xhr, status, err) { 
      navigator.id.logout(); 
      alert("Login failure: " + err); 
     } 
    }); 
} 

. 그럼에도 불구하고 브라우저 캐시 (Firefox)를 지우고 사용하지 않기위한 모든 노력, 내 /webservice.php 페이지가 전혀 호출되지 않습니다. 아약스 호출은 즉시 코드에서 "reload()"호출을 남겨두면 "success"함수를 실행합니다.이 함수는 극적인 루프에서 윈도우를 다시로드하는 기능을 유지합니다. 내 /webservice.php 호출에서 PHP 세션 ID가 필요하므로 페이지에 PHPSESSIONID 쿠키를 전달합니다.

나는 내 파이어 폭스 캐시를 지웠다. 브라우저를 닫았지만 URL에 'sFoolCache'변수를 추가했지만 게시물은 그렇지 않습니다.하지만 작동하지 않았습니다. 나는 길을 잃었다. 그것은이 경우에 도움이 등장

+0

제 생각에 webservice.php가 최상위 디렉토리에 있지 않습니다. 브라우저에 http : // /webservice.php을 입력하면 어떤 응답을 얻으실 수 있습니까? – andy

+0

또한 '성공', '오류'및 그러한 속성은 jQuery 1.8에서 사라집니다. 대신'$ .ajax(). done (function (data) {/ * ... * /})'를 사용하십시오. 자세한 내용은 [here] (http://api.jquery.com/jquery.ajax/)를 확인하십시오. –

+0

나는 내 webservice.php URL이 좋았다는 것을 알고 있었고, 내 질문에 Andy에게 감사한다고 말 했어야했다. @Michal : Pheew!, blabla.done(). 그리고 그렇게했습니다. 굉장해! 감사합니다 :-) – franchsesko

답변

0

, 나는

확인 여기 답을 복구하는 해요 : http://api.jquery.com/jquery.ajax/

중단 공지 사항을 다음 jqXHR.success(), jqXHR.error() , jqXHR.complete() 콜백은 jQuery 1.8부터 사용되지 않습니다. 코드를 제거하기 위해 코드를 준비하려면 jqXHR.done(), jqXHR.fail(), 및 jqXHR.always()를 대신 사용하십시오.

사용이 대신 : 문제가 URL을 전달 거기처럼

$.ajax(/* ... */) 
.done(function(data) { /* ... */ }) 
.failure(function(data) { /* ... */ }); 
+0

그게 전부입니다. 다음은 어떻게 작동하게하기 위해 다시 작성한 것입니까? 다음 게시물, 미안보기 – franchsesko

0

이 통과 전체 URL 시도 같은데 : 그래서

function onLogin(pAssertion) { 
var sPHPSessionID = $.cookies.get("PHPSESSID")+''; 
var sFoolCache = new Date().getTime() + '' + Math.random(); 
$.ajax(
    { 
    cache: false, 
    type: 'POST', 
    url: 'FullURL and QUuerystring', 
    data: { assertion: pAssertion, PHPSESSID: sPHPSessionID, z: sFoolCache }, 
    success: function(res, status, xhr) { alert("do reload"); }, 
    error: function(xhr, status, err) { 
     navigator.id.logout(); 
     alert("Login failure: " + err); 
    } 
}); 
} 
0

을 @Michal 덕분에, 나는 여기에 재 작성 방법 그것을 작동하게하십시오. (btw, 내 의견은 다른 방식으로 너무 길기 때문에 나는 스스로에게 대답해야만했다.) :

function onLogin(pAssertion) { 
    var sPHPSessionID = $.cookies.get("PHPSESSID")+''; 
    var sFoolCache = new Date().getTime() + '' + Math.random(); 
    $.ajax(
    { 
     cache: false, 
     type: 'POST', 
     url: '/webservice.php?id=personaauth&u=i', 
     data: { assertion: pAssertion, PHPSESSID: sPHPSessionID, z: sFoolCache } 
    }).done(function(res, status, xhr) { 
     window.location.reload(); 
     }).fail(function(xhr, status, err) { 
      navigator.id.logout(); 
      alert("Login failure: " + err); 
     }); 
} 

Michal의 대답에 투표하십시오 (여기).이 하나가 아닙니다 ;-) 감사합니다.

관련 문제