2010-03-29 7 views
0

반환 된 값 (텍스트 만)을 jQuery의 변수에 할당하려고합니다. 나는 이것을 썼다 :jQuery에서 반환 된 응답에 변수를 할당하는 방법

var hm=22; 

    $.ajax({ 
     type: "GET", 
     url: "ajax_check_match.php",              
     dataType: "text", 
     success:callback 
     }); 

    function callback(data, status) 
    { 
      // assign ajaxed value to cm variable             
    cm=data; 

    if (hm != cm) 
    { 
    dosomething(); 
    } 
    } 

그러나 그것은 언제나 실패한다. cm 변수가 요청을 보낼 때 계속 정의되지 않은 이유는 무엇입니까? 1을 반환 PHP 파일을 설정하고 여전히 정의되지 않은 말한다. 브라우저에서 ajax_check_match.php를 열었고 "1"이 표시됩니다.

간단한 숫자로도 충분하기 때문에 XML 또는 JSON을 사용하는 지점을 보지 못했습니다. 아니면 XML/JSON을 사용해야합니까?

업데이트 : 정의되지 않은 결과를 찾는 방법 ... $ ("msgbox")를 작성했습니다. 콜백 함수 뒤에 append ("hm is"+ hm + "및 cm가 + cm)를 추가하고 cm은 항상 undefined를 반환합니다. 00을 추가하는 것을 계속하기 위해 3 초 사이의 간격을 설정합니다.

새 업데이트 : 나는 바보입니다. 마침표 ajax_check_msg.php의 위치가 잘못되었습니다 - 다른 코드입니다. 잘못된 페이지를 확인했습니다.하지만 안심하고 의견을 보내 주시면 감사하겠습니다.

+0

'doSomething()'메소드 또는 다른 곳에서 정의되어 있지 않습니까? –

+0

이 오류가 발생하는 라인은 무엇입니까? 함수 외부에서 CM에 액세스하려고합니까? –

+0

'hm'이 아닌 'cm'이 확실한가요? – BalusC

답변

0

22이 반환되는 것을 긍정적으로 생각하십니까? 응답이 표시되는 방화범이 끌리는 대상은 무엇입니까? 내 생각에 다른 내용은 단지입니다.

+0

처음에는 질문의 마지막 부분을 건너 뛰었지만 실제로는 1이 반환되므로 긍정적이 될 수 있으므로 22가 아니어야합니다. –

2

PHP 파일이 1 인 경우 hm이 22로 설정되므로 cm != hm이 항상 true입니다.

cm은 정의되지 않은 상태입니다 ... 왜냐하면, 정의하지 않기 때문입니다. 넣기

var cm = ''; // or something else 

어딘가에 먼저 초기화하십시오.

+2

그건 중요하지 않습니다. 변수가 정의되지 않았다면 변수는 단지 전역 범위 – Bob

+0

에 넣어 질 것입니다. 바보 같은 ... 감사합니다 : P – Matt

0

AJAX는 비동기식으로 발생합니다. 즉, 코드에 나타나는 순서가 아니라 응답이 돌아올 때 콜백 함수가 발생한다는 것을 의미합니다.

코드는 다음 순서로 발생 :이 코드라고

  • 코드 오프

    1. var hm=22;
    2. $.ajax 화재가 완료
    3. 나중에 응답이 돌아오고, callback 기능 불이 .

    이 때문에 cm을 반환 할 수 없으며 콜백 기능이 실행될 때까지 설정되지 않습니다. 대신 콜백 함수에서 cm을 사용하여 필요한 코드를 호출하십시오. 따라서 변수가 준비되면 실행됩니다.

  • +0

    그는 cm로 돌아 오지 않습니다. 그는 그것을 테스트하고 있으며, hm과 동일하면 다른 것을 실행합니다. 그래도 hm 변수에 대한 요점은있을 수 있습니다. 이것이 전역 범위에 있는지 여부에 따라 다릅니다. –

    +0

    그는 아무것도 반환하지 않으려 고합니다. 그냥 함수를 실행하십시오. 예, AJAX 요청이 완료되면 함수가 호출되고 있지만, 그때 그는 여전히'data'와'hm'으로 작업 할 수 있어야합니다. – Pickle

    +0

    @crimson_penguin, @pickle - OP가 모든 코드를 게시했다고 생각하지 않습니다. * 정의되지 않은 부분이 발생 했으므로이 가능성을 버리고 말하지 않았습니다. –

    1

    실제로 jQuery를 모르지만 here을 보면 데이터 유형으로 "html"을 원한다고 생각됩니다. 또한 하나의 특정 값이 아닌지 테스트하기보다는 정의를 한 후에 alert(cm);을 수행하는 것이 좋습니다.

    0

    출력 data 원하는지 확인하십시오. 더 나은 아직, 다른 불필요한 변수를 설정하지 말고 단지 if(hm != data)을 사용하십시오.

    hm은 이전의 숫자이고 후자의 2는 문자열이므로 절대로 cm 또는 data과 같지 않습니다. 먼저 몇 가지 유형을 변경해야합니다.

    +1

    첫 번째 제안에 동의하지만 두 번째 단락이 정확하지 않다고 생각합니다. Javascript에서는 다음 내용이 true입니다. 22 == "22" –

    관련 문제