2011-03-24 4 views
2

"yes"또는 "no"를 반환하는 파일 availability.php를 정의했습니다. 사용자를 구독하기 전에 양식을 사용할 수 있는지 확인해야하는 양식이 있습니다.이 아약스를 사용하여이 작업을 수행합니다. 함수,하지만 비교 라인이 작동하지 않는 것 같아?JQuery Ajax 함수가 반환합니다.

 availability: function(element, value) { 
      $.ajax({ 
      type: "GET", 
      url: "/tunnel/availability.php", 
      data: "username="+element, 
      dataType: "html", 
      success: function(data){ 
       $("#response").html(data); 
       var $response = data; 
       if ($response == "yes") 
       alert("found"); 
      } 
      }); 
     } 

답변

0

이 시도 :

availability: function(element, value) { 
    $.ajax({ 
    type: "GET", 
    url: "/tunnel/availability.php", 
    data: "username="+element, 
    success: function(data){ 
     if (data == "yes"){ 
     alert("found"); 
     } 
    } 
    }); 
} 
+0

작동하지 않습니까? 찾기 또는 필터 같은 기능을 사용할 수 있습니까? –

0

왜 당신은 작동하지 않습니다 생각하십니까? 양식을 제출하기 전에 함수가 값을 확인하고 반환 할 것으로 예상되면 Ajax 검사가 수행되기 전에 availability 함수가 반환되어 양식에서 경고를 제출하고 무효화 할 수 있습니다. 즉, 페이지 은 (는) 이미 언로드되어 새 요청이 처리되고 있습니다. availability에서 거짓

  1. 반환
  2. availability 성공 함수의 양식 제출을 수행 (또는 그렇지 않으면 양식 제출을 중지) : 당신이 양식을 제출하기 전에 가능 여부를 확인하려면이 옵션을 사용하려면 다음을 수행해야합니다.
  3. (아마) html 대신 텍스트 응답이 필요하다고 표시합니다.

검사를 단순화 할 수도 있습니다. 검사하기 전에 변수에 "데이터"를 넣을 필요가 없습니다. 나는 왜 당신이 페이지에 그것을 추가하고 있는지 확실하지 않지만 그것은 합리적 일 수 있습니다. 또한 함수의 이름 변경 (이 작업을 수정하고 AJAX를 통해 양식 제출을 처리하는 경우)을 제안합니다. 그렇지 않으면 처리기를 제거하고 양식에서 제출을 트리거 할 수 있습니다.

submitIfAvailable: function(form, element, value) { 
    $.ajax({ 
    type: "GET", 
    url: "/tunnel/availability.php", 
    data: "username="+element, 
    dataType: 'text', // I think it should work without this, but... 
    success: function(data){ 
     if (data == "yes"){ 
     $form = $(form); 
     $.post($form.attr('action'), $form.serialize(), function(result) { 
      // process the result of form submission 
     }); 
     } 
    } 
    }); 
    return false; 
} 

나는 몇 가지 가정을 만들고 있어요 - 이것은 availability 기능을 사용하는 방법에 맞지 않을 경우 적절하게 수정합니다. 기억해야 할 중요한 점은 전에 AYAX 호출이 완료되고 AJAX 호출에서 오는 함수의 반환 값을 사용할 수 없기 때문에 함수가 을 반환한다는 것입니다. aSyncfalse으로 설정하여 AJAX 호출을 동 기적으로 실행하지 않으면 적어도 사실입니다.

0

실제로 사용 가능한 페이지가 무엇인지 확인해야합니다. Firebug (또는 가장 좋아하는 JS 디버거)를 사용하여 콜백을 디버그하여 어떤 종류의 객체가 data으로 반환되는지 확인합니다. 반환 값이 랩핑 된 것을 알 수 있습니다 (예 : data.value 또는 이와 유사한 항목).

관련 문제