我在父html表單(不是我的代碼!)中有一個ajax表單。用例場景是提示用戶輸入配置文件信息,打開彈出窗口爲該帳戶添加多個聯繫人,並繼續填寫配置文件的其餘部分。
聯繫人框允許用戶添加新聯繫人,編輯現有聯繫人或刪除聯繫人。
問題是當用戶提交添加,編輯或刪除的ajax表單時,整個頁面會刷新,並且父表單中任何未保存的$ _POST數據都會丟失。
如果我在頁面上或Ctrl + $或Cmd + R中輸入,$ _POST數據不會丟失。這是幾個我看過試圖找出這個東西出來的文章:
- https://stackoverflow.com/questions/12734535/ajax-complete-without-page-reload
- Populating fields in modal form using PHP, jQuery
- "location.reload()" loses POST/SESSION data? (F5/Ctrl+R keeps data?)
- "location.reload()" loses POST/SESSION data? (F5/Ctrl+R keeps data?))
我是一個PHP開發人員,一個完整的AJAX newb,所以請原諒我缺乏這方面的知識。我試圖用return false;
和location.reload(true)
模仿Ctrl + R效果,但都沒有效果。我錯過了什麼?
這裏是我的彈出框代碼:
$("#contact-dialog").dialog({
autoOpen: false,
width: 600,
modal: true,
buttons: {
"Ok": function() {
var bValid = true;
allFields.removeClass("ui-state-error");
bValid = bValid && checkLength(contact_first_name, "first name", 2, 64);
bValid = bValid && checkLength(contact_last_name, "last name", 2, 64);
bValid = bValid && checkLength(title, "title", 1, 64);
bValid = bValid && checkLength(phone, "phone", 6, 30);
bValid = bValid && checkLength(email_address, "email_address", 5, 128);
if (bValid) {
if (contact_count % 2) {
$("#contacts").append();
} else {
$("#contacts").append();
}
contact_count++;
$.ajax({
type: "POST",
url: "facility-categories-ajax.php",
data: {
type: 'add-to-contacts',
input: $('#contact-dialog-link').val(),
cid: $('#contact-dialog-id').val(),
first_name: contact_first_name.val(),
last_name: contact_last_name.val(),
title: title.val(),
phone: phone.val(),
email_address: email_address.val(),
twitter: twitter.val(),
facebook: facebook.val(),
linkedin: linkedin.val()
},
complete: function(data) {
location.reload();
return false;
}
});
$(this).dialog("close");
}
},
Cancel: function() {
contact_update.val('-1');
$(this).dialog("close");
}
},
close: function() {
allFields.val("").removeClass("ui-state-error");
tips.text("");
if (contact_update.val() > -1) {
delete_contact(contact_update.val());
}
}
});
我感謝您的幫助!
你在這裏的目標是什麼? –
目標是添加多個聯繫人並將數據發送回父表單,而不會丟失尚未保存的父表單中的任何數據。 – deewilcox