2011-07-30 2 views
1

거의 완성 된이 jQuery 프로젝트가 있는데, 사용자의 데이터가 성공적으로 검증되었을 때 최종 부분을 위해 $ .post 함수를 사용하여 외부 PHP 스크립트를 실행하고 사용자가 입력 한 정보를 매개 변수로 전달합니다.

하지만 내 문제는 내 콜백 함수는 그 뒤에 경고 함수를 넣을 경우에만 작동한다는 것입니다.

작품 :

$.post("backend.php", dataString, 
    function(response) { 
     if (response=="1") { 
      alert("ok"); 
     } 
    }, 'html'); 

alert('test'); 

하지만 난 닫는 태그 다음에 그 경고를 두지 않는 경우, 내 스크립트가 "확인"또는 콜백에서 다른 어떤 경고를 할 나던.

내 코드에 문제가있는 것을 본 사람이 있습니까?

감사합니다.

+0

이 가진 모든 행운? 나는 똑같은 문제를 겪고있다. 감사! –

+0

@AdamStorr 죄송합니다.하지만이 프로젝트는 꽤 오래 전에 끝났고 마술처럼 수정 된 코드를 다시 작성했습니다. – Souleiman

답변

2

제 생각 엔 $.post() 스크립트가 페이지를 변경 시키거나 게시물을 중지 시키거나 실패하게하는 스크립트가 나오는 것 같습니다.

기본적으로 모든 alert('test')은 확인 단추가 눌러지기를 기다리는 코드를 차단합니다. 갑자기 코드를 만들 수있는 유일한 방법은 게시물을 엉망으로 만들었던 두 번째 경고 다음에 코드에서 실행되는 것이있는 경우입니다.

게시물이 비동기임을 기억하십시오. 다른 코드가 실행되는 동안 백그라운드에서 발생하고 성공할 때만 alert('ok')이 실행됩니다.

내 생각에 귀하의 페이지에있는 다른 항목이 실행되어 게시물을 엉망으로 만들고 있습니다.

+0

조금 늦었습니다.하지만이 문제는 누구든지 문제를 해결할 가장 가까운 조언이므로 받아 들여지고 고마워요! – Souleiman

1

그래서 나는 여기서 파티에 늦었지만 여기서 똑같은 문제로 보였고 결국 해결책을 찾았다. 제 경우에는 JQuery POST 호출의 트리거로 사용하려고 시도한 양식 제출 단추가 있습니다. 문제는 양식을 제출할 때 JQuery POST 호출을 취소 한 것입니다.

제 경우에는 제출 단추를 일반 단추로 변경 한 다음 POST 호출 과 동일한 JQuery 함수에서 양식 전송을 수행했습니다. POST 호출. 또한 양식 제출 요청에 약간의 지연을 도입해야했습니다. 그래서, 다음과 같이 보입니다.

$("#saveStuff").click(function() { //my save button, no longer a submit 
     $.post('UpdateStatusFlag', {}, function (data) { 
       //some irrelevant stuff here 
      } 
     }); 
     setTimeout("$('#MyForm').submit()", 100); //needed the small delay to allow the post call to complete 
}); 

희망 사항이 몇 명의 사람들이 저와 같은 실수를 저지르는 데 도움이되기를 바랍니다.

1

젊은 선수를위한 매우 미묘한 함정 (예 : 나 자신과 같은). 양식의 제출 이벤트에 게시하여 정확히 똑같은 일을하고있었습니다. 물론 양식은 제출과 게시가 동시에 이루어 지므로 게시물의 응답이 돌아 오면 양식이 새로 고침되고 재설정됩니다. 혼란이 지배합니다.

필자의 경우 실제로 양식을 제출하지 않으려 고 했으므로 제출 기능의 최종 문으로 return false;을 추가하면 좋게 정렬되었습니다.

예컨대 :

$('#myForm').submit(function() { 
    $.post('myurl',{some params}); 
    return false; 
}; 
관련 문제