다른 곳에서 논의 된 동일한 문제가 발생했지만 지금까지 발견 한 수정 사항 중 아무 것도 내 문제를 해결하지 못했습니다. :
$ (# form) 안에 $ .post를 사용하고 있습니다. 양식을 AJAX를 통해 제출하면 사용자가 페이지를 떠나지 않습니다. 그것은 IE에서 멋지게 작동하지만, FF와 Chrome은 폼에 폼 필드 이름과 값을 가진 현재 페이지를 새로 고칩니다. 아마도 폼에 액션이 지정되지 않았기 때문일 것입니다. Internet Explorer에서 $ .post를 올바르게 수행하는 함수를 찾을 수 없기 때문에 IE에서 지정된 함수의 이름을 바꾸면 IE가 문제를 일으킬 수 있습니다. 또한 현재 페이지를 양식 필드 이름과 값으로 새로 고칩니다. querystring.
양식이 동적으로 만들어지며 한 번에 둘 이상의 양식을 볼 수 있도록 양식 이름에 임의의 숫자가 있어야합니다. 폼 이름이 항상 모든 브라우저에서 alert()에 올바르게 표시되기 때문에 문제의 일부라고 생각하지 않습니다.
function add_new_product(){
var formName = "frm_add_new_product_" + window.random_number_for_IDs;
alert('this alert is BEFORE the (#formname).submit');
$("#" + formName).submit(function(event) {
alert('this alert is inside the (#formname).submit BEFORE .preventDefault');
event.preventDefault();
alert('this alert is inside the (#formname).submit AFTER .preventDefault but BEFORE $.post');
$.post("add_new_product.php?SiteID=<?php echo $_GET['SiteID']; ?>", $("#" + formName).serialize(), function(data){$("#DIV_new_product_name_" + window.random_number_for_IDs).html(data);});
alert('this alert is inside the (#formname).submit AFTER $.post');
});
alert('this alert is AFTER the (#formname).submit');
$("#DIV_new_product_form_" + window.random_number_for_IDs).fadeOut(100, function(){$("#DIV_new_product_name_" + window.random_number_for_IDs).fadeIn(100);});
}
IE에서는 모든 알림()이 위에서 지정한 순서대로 표시되지 않습니다. $ (# form) .submit 전후의 것들을 먼저 표시 한 다음 안에있는 것들을 표시합니다. FF와 Chrome은 $ (# 양식). 제출 전후의 경고() 만 표시하지만 내부에는 절대 표시하지 않습니다.
무엇이' php echo $ _GET [ 'SiteID']; ?>'클라이언트에 표시 하시겠습니까? 그것은 당신이 기대하는 것입니까? 또한 스크립트는'function (data) {}'안에있는 코드를 기다리기 때문에 마지막 AFTER 경고는 항상 앞에 표시됩니다. 데이터가 클라이언트에 반환 된 후에 수행해야 할 작업은 해당 함수 (데이터) {}에 들어가야합니다. – Niklas
Chrome의 뛰어난 내장형 내성 도구, 특히 자바 스크립트 디버거를 사용해 보았습니까? Ctrl + Shift + i를 누르고 스크립트를 클릭 한 다음 드롭 다운에서 스크립트를 가져 와서 디버깅 할 줄 번호를 클릭하면됩니다. – cheeken
Niklas : Firebug는 PHP의 SiteID가 제대로 표시됨을 보여줍니다. 수수께끼는 .submit이 전혀 작동하지 않는 것입니다. 그렇다면 지정된 DIV에 add_new_product.php의 대상 페이지에서 오류가 채워 져야합니다. –