2012-11-06 5 views
0

이 AJAX 요청은 newsletter-signup.html 파일에 연결 한 다음 반환 된 data 변수에서 "form-success"문자열을 검색합니다. 이 문자열은 if 문 내의 (Django) 템플릿을 통해 적용되어 양식에 성공했음을 알립니다. 이 데이터를 검색 할 수있는 빠른 방법이 있나요Javascript/jQuery :이 AJAX 요청을 더 빨리 실행할 수 있습니까?

if (data.indexOf('form-success') > 0) { 

: 여기

전체 데이터를 검색하는 조각이다? 또는 반환 된 데이터가 성공적인 가입인지 여부를 결정하는 더 좋은 방법 인 althoteger일까요?

미리 도움을 주셔서 감사합니다.

$.ajax({ url: '/newsletter-signup', type: 'GET', data: {email: emailVal}, async: false, 
     success: function(data){ 
      // Returning 'form-success' in our data string indicates the sign up worked 
      if (data.indexOf('form-success') > 0) { 
       // open the success message in a modal window 
       happyModal.open({ content: thankYouContent }); 
      } else { 
       // if not successful re-load the contents, firing our standard error message 
       theBtn.removeClass('disabled'); 
       $('.login-panel').load('/newsletter-signup','email=' + encodeURIComponent(emailVal), function() { 
       }); 
      } 
     } 
    }); 
+0

요청이 진행되는 동안 작은 로딩 그래픽을 보여줍니다. 나는 UI에서 더 빠르게 만들 수있는 일이 있는지 의심 스럽다. –

답변

1

나는 매우 당신이 data.indexOf 통화 중인지 지연을보고있는 의심 : 여기에 전체 코드입니다. 알고있는 지연은 아마도 아약스 호출 자체 일 것입니다. 아약스 호출 자체는 네트워크에서 소요되는 한 오래 걸립니다. 속도를 높이기 위해 코드에서 할 수있는 일은 없습니다.

async: false으로 전화를 걸 수도 있습니다. 이는 통화가 진행되는 동안 대부분의 경우 브라우저를 잠그고있어 쾌적한 사용자 환경을 제공하지 못하고 지연을 강조한다는 의미입니다. 요청이 대기 중일 때 다른 탭을 사용할 수있게 해주는 것과 같은 일종의 '일시적인'디스플레이로 비동기로하는 것이 좋습니다.

(참고 : async: false은 jQuery 2.0에서 사라집니다.)

+0

Excellent, 'async : false'의 헤드 감사합니다. – shrewdbeans

관련 문제