2012-12-07 4 views
0

크롬 확장 기능을 구축하고 있고 Ajax 요청의 응답이 "준비"(상태 200 및 readystate 4)로 단 한 번이 아닌 4 번 나오고 1 단계를 거치지 않습니다 -삼 . 대신 4 번 4. 이것은 나에게 좋지 않습니다. 사용자에게 한 번이 아니라 네 번 경고하는 것입니다.Ajax Response ReadyState가 4로 이동합니다.

내 코드는 서버 내 코드는 데이터베이스와 다시 밖으로 에코을 일부 데이터를 끌어 PHP는 그냥

var xmlhttp = new XMLHttpRequest(); 
xmlhttp.onreadystatechange = function() { 
    console.log(xmlhttp.readyState + xmlhttp.status); 
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
     if (xmlhttp.response) checkForAlertTab(xmlhttp.response); 
     else console.log('false'); 
    } 
} 
xmlhttp.open("POST", "http://myserver.php", true); 
xmlhttp.setRequestHeader("Content-Type", "application/json"); 
xmlhttp.send(sendToServer); 

간단한 자바 스크립트를하다, 응답이 좋은 멋쟁이입니다 (정보가) 왜 아약스 독서가 정상적으로 그의 단계를 거치지 않는 것일까? -이 원인이 무엇일까?

+0

재생할 수 없습니다. –

답변

-1

크롬 확장 프로그램에서 jQuery를 사용하지 않고 $ .ajax! 가볍기 때문에 쉽게 할 수 있습니다.

http://api.jquery.com/jQuery.ajax/

어쨌든, 위의 문제에 대한 가능한 이유는 - 당신의 XMLHTTP 개체가 글로벌이기 때문에, 어쩌면 크롬은 새로운을 onreadystatechange에게 당신이 그것을 대체하는 대신 아약스 게시물을 호출 할 때마다 할당합니다. 그것은 실제로 전화의 수에 달려 있습니다.

+0

글로벌이 아니기 때문에 모든 것을 래핑하는 함수가 있습니다. jQuery는 모든 정보에 대한 답변이 아니지만 게시하려고 시도하고 다른 결과가 표시되는지 확인해야 할 수도 있습니다. 나는 아직도 이것이 어떻게 일어날 수 있는지 이해하고 싶다 ... –

+0

은 여러 번 발생하는 루프 또는 이벤트 콜백 내 코드인가? –

+0

-1. 질문에 전혀 대답하지 않기 때문에. 당신이 대답을 향상 시키면, 기꺼이 내 downvote를 철회합니다. 개선 방법을 모르는 경우 대답을 삭제하는 것이 좋습니다. –