我在父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