2014-02-18 4 views
2

jquery의 $ .ajax를 사용하여 json 데이터를 게시 요청으로 내부 서버에 보냅니다. 나는 응답을 얻을 수 있지만, 성공 함수에서는 console.log가 작동하지만 즉각적인 회선은 작동하지 않는다. location.href = '/ users'; 성공에 location.href 만있는 경우에도 트리거되지 않았습니다. 다음은 내 코드 샘플입니다jquery ajax에서 location.href가 실행되지 않음

<script type='text/javascript'> 
     function submitData() { 
      var payload = { 
       'fullname': $('#fullname').val(), 
       'username': $('#username').val(), 
       'email': $('#email').val(), 
       'password': $('#password').val(), 
      }; 

      var onSuccess = function (data, textStatus, jqXHR) { 
       console.log(jqXHR.status); 
       location.href= "/thankyou.html"; 
      }; 


      $.ajax({ 
       type: 'POST', 
       async: false, 
       url: '/users', 
       contentType: 'application/json', 
       dataType: 'json', 
       data: JSON.stringify(payload), 
       success: onSuccess, 
      }); 
     } 
</script> 

나는 또한에서는 window.location이 window.location.href는 window.location.assign(), 없음 위의 코드에서 작동하는 것 같다없는 노력했다. 그러나 이상하게도, 아약스에 대한 완전한 콜백을 정의하고 경고 할 때, 성공에 대한 location.href는 거의 작동하지 않습니다 (그러나 항상 그렇지는 않습니다). 나는 또한 비슷한 질문을 쳐다 보면서 그 해답을 시도했지만이 문제를 해결하지는 못했다. async = true이면 내 플라스크 서버에서 브로큰 파이프 오류가 발생합니다.

+0

그것은'../ users'해야 하는가? –

+0

아니요. 내 데이터가 서버에 의해 수신되어 거기에서 생성되고 201 응답 코드를 전송하기 때문에 URL에 문제가 없습니다. 또한 때로는 location.href가 거의 동일한/사용자 URL로 작동합니다. 확실히 그것은 문제가되지 않습니다. – Prashere

+0

이상한 논리. 당신은 ajax를 사용하여/users에게 POST하고, 응답이 끝나면 응답의 데이터를 무시한 다음 같은/사용자로 리디렉션합니다. 왜 JS로 돌아가서 귀찮게합니까? POST에서 리디렉션합니다. –

답변

1

은 이런 식으로 전화를보십시오.

+0

그러면 console.log가 작동합니까? –

+0

시도했지만 console.log는 작동하지만 위치는 작동하지 않습니다. – Prashere

+0

사용중인 제출 버튼입니까? 클릭하면이 함수는'submitData()'를 호출하고 있는가? –

0

onSuccess 함수를 제거하고 성공 자체 내에 리디렉션을 넣습니다. 또는 방화범 입력기를 사용하여 오류가 발생했는지 확인하여 성공이 전혀 발생하지 않도록하십시오.

$.ajax({ 
      type: 'POST', 
      async: false, 
      url: '/users', 
      contentType: 'application/json', 
      dataType: 'json', 
      data: JSON.stringify(payload), 
      success: function(data, textStatus, jqXHR){ 
       console.log(jqXHR.status); 
       window.location.href= "/thankyou.html"; 
      } 
     }); 

는 또한 아약스 호출 코드에 오류가있는 , success:에서 이벤트를 가지고있다 :

+0

콘솔에 오류가 없으며 그렇게 시도했습니다. – Prashere

+0

다음 서버 측 응답을 검사해야합니다. 성공에 경고하고보고. – loki

0

이 시도 :

$.ajax({ 
     type: 'POST', 
     url: '/users', 
     data: JSON.stringify(payload), 
     contentType: 'application/json; charset=utf-8', 
     dataType: 'json', 
     async: false, 
     cache: false, 
     timeout: 100000, 
     success: function (response) { 
      location.href= "/thankyou.html"; 
     } 
    });