2010-12-11 12 views
1
$("#Save").click(function() { 
    var lastForm = $(".frm_product_group").size() - 1; 
    $(".frm_product_group").each(function (index) { 
     $.post("save_new_product_group.php", $(this).serialize(), function (data) { 
      if (data == false) { 
       alert("Error: Try again"); 
      } 
     }); 
     if (index == lastForm) { 
      window.location.href = "product_group.php"; 
     } 
    }); 
}); 

위 코드에서 창은 jquery.post (...)없이 product_group.php로 리디렉션됩니다. window.location ... 전에 alert (...)을 사용하면 jquery.post() 업데이트가 제대로 작동합니다. 나는 그것이 jquery 응답 시간의 문제라고 생각한다. 나는 그것을 분류 할 수 없었다.jquery가 제대로 작동하지 않습니다.

도와주세요. 하여 양식을 당신이 게시물에 대한 콜백 내에서 위치 변화를 둘 필요가

$("#Save").click(function (e) { 
    e.preventDefault(); 
    var lastForm = $(".frm_product_group").size() - 1; 

답변

1

을 게시하지 않습니다 저장 버튼을 수 있도록

+0

@ box9 : 죄송합니다. 제안을하지 못했습니다. – Iqbal

+0

@Iqbal - 무슨 일이 일어나고 있습니까? 창은'product_group.php'로 리디렉션됩니까? 어떤 게시물이 통과하고 있습니까? 나는 단 하나의 게시물이 통과하고 있다고 생각합니다. –

+0

@Iqbal - 서버 응답이 임의의 순서로 되돌아 올 수 있고 window.location.href가 일찍 변경되기 때문에 여러 가지 양식을 처리 할 수있는 대답이 업데이트되었습니다. –

0

당신은에서는 event.preventDefault 호출을 없을 수 있습니다. 게시물이 완료되기 전에 위치를 변경 (리디렉션)합니다.

$("#Save").click(function() { 
    var numForms = $(".frm_product_group").length; 
    $(".frm_product_group").each(function() { 
     $.post("save_new_product_group.php", $(this).serialize(), function (data) { 
      if (data == false) { 
       alert("Error: Try again"); 
       return false; // Prevent more posts from being sent after error 
      } else { 
       numForms--; 
       if (numForms === 0) { 
        window.location.href = "product_group.php"; 
       } 
      } 
     }); 
    }); 
}); 
+0

아무 것도 없으므로 저장 버튼을 누르면 양식이 게시되지 않습니다. 모든 jquery에 의해 제어됩니다. 문제는 아약스 응답에있을 수 있습니다 ...하지만 난 알아낼 수 없습니다. – Iqbal

+0

마크 업을 게시 할 수 있습니까? – Jaime

+0

e.preventDefault()가 문제를 해결하지 못했습니다. – Iqbal

0

나는 다른 날에 같은 문제가 있었지만 예 jquery가 너무 빨리 작동하는 문제가 있습니다. 내 솔루션은 setTimeOut()을 사용하여 리디렉션에 대한 호출을 지연시키는 것이 었습니다. 코드는 다음과 같을 것입니다 :

$("#Save").click(function() { 
     var lastForm = $(".frm_product_group").size() - 1; 
     $(".frm_product_group").each(function (index) { 
      $.post("save_new_product_group.php", $(this).serialize(), function (data) { 
       if (data == false) { 
        alert("Error: Try again"); 
       } 
      }); 
      if (index == lastForm) { 
       setTimeout("foo",1000); 

      } 
     }); 
    }); 

    function foo() 
    { 
     window.location.href = "product_group.php"; 
    } 
+0

나는 box9에 동의한다. 지연은 해결책 일 수 있지만 좋은 해결책은 아닙니다. 고맙습니다 user537417 – Iqbal

관련 문제