2015-01-06 9 views
3

변수 unamepass을 통해 전달되는 사용자가 입력 한 데이터에 따라 'y'또는 'n'을 반환하는 PHP 스크립트를 사용하고 있습니다. ajax $.get() 메서드를 사용하여 PHP 스크립트를 호출합니다.자바 스크립트가 PHP와 작동하지 않습니다

$.get() 메서드 내에서 데이터를 출력하려고하면 완벽하게 작동하지만 if 문을 사용하여 'y'또는 'n'과 값을 비교할 때 문제가 발생합니다.

내 코드는 어떤 도움을 크게 감상 할 수 this-

var status; 
    $('#login').click(function(){ 
    $.get("login.php", { uname: document.getElementById('uname').value, pass: document.getElementById('pass').value }) 
    .done(function(data) { 
     status=data; 
     alert(status); //This works 
    }); 

    if(status=='y') 
    { 
     alert('yes!'); //This is not working 
     // window.location.replace("welcome.html"); 
    } 
    else if(status=='n') 
    { 
     alert('no!');  //This is not working 
    } 
}); 

처럼 간다.

+1

전통적인 JS와 jQuery의 혼합은 권장되지 않습니다. val()' – Raptor

+0

은'done()'콜백에 경고를 넣으려고 했습니까? – Aditya

+0

@Raptor 물론입니다. 그것을 바 꾸었습니다! :) – Pranav

답변

5
인해 아약스의 비동기 특성으로 아약스 안에 당신의 if 조건을 이동

:

var status; 
    $('#login').click(function(){ 
    $.get("login.php", { uname: document.getElementById('uname').value, pass: document.getElementById('pass').value }) 
    .done(function(data) { 
     status=data; 

     if(status=='y') 
     { 
      alert('yes!'); 
     } 
     else if(status=='n') 
     { 
      alert('no!'); 
     }  
    }); 
}); 
+2

''작동하지 않습니다'를''지금 작동 중 '으로 바꾸어야합니다. 거짓말하는 댓글 버그, 최악의 버그! : D – Amadan

+1

@Amadan : lol, 덧글 제거 : – Dev01

+0

고마워요! 그것에 대해 생각하지 않았어! 이 후에 페이지를 새로 고치는 것을 막을 수있는 방법이 있습니까? 또한 모든 대체 시간마다 작동하는 것으로 보입니다. (나는 이것이 상쾌함 때문이라고 생각하고 있단다.) – Pranav

3

이 일반적인 비동기 문제입니다. 당신은 요청을하고, 아직 어떤 문자열로 돌아 오지 않은 결과를 비교 한 다음, 요청에 대한 응답이 너무 늦어서 문제가되지 않게합니다. 수표로 너무 빠르다. done 콜백에 상태 비교를 입력하십시오.

1

아약스는 요청에 대한 코드가 따라서 VAR 상태가 아직 초기화되지 않을 수 있습니다, 아직을 반환하지 않을 수 있습니다 코드가 조건부 문에서도 도착 시간에 의해 비동기 때문이다. 다음과 같이 내부의 condicional 문에서도에게 수행 기능을 을 넣어보십시오 :

$('#login').click(function(){ $.get("login.php", { uname: document.getElementById('uname').value, pass: document.getElementById('pass').value }) .done(function(data) { if(data =='y') { alert('yes!'); // window.location.replace("welcome.html"); } else if(data =='n') { alert('no!'); } }); 

내가 그 트릭을 할해야한다고 생각;) ... 더 해명 당신이 jQuery를 AJAX API 문서를 방문 할 수 있습니다 : http://api.jquery.com/jquery.ajax/

관련 문제