親htmlフォーム内にajaxフォームがあります(私のコードではありません!)。ユースケースのシナリオでは、ユーザーはプロファイル情報の入力を求められ、ポップアップを開いてアカウントに複数の連絡先を追加し、残りのプロファイルの入力を続行します。
連絡先ボックスを使用すると、ユーザーは新しい連絡先を追加したり、既存の連絡先を編集したり、連絡先を削除したりできます。
問題は、ユーザーが追加、編集、または削除のためにajaxフォームを送信すると、ページ全体が更新され、親フォームの未保存の$_POSTデータが失われることです。
ページでEnterキーを押すか、Ctrl+$またはCmd+Rを押しても、$_POSTデータは失われません。これらは私がこのことを理解しようとして読んだ記事のいくつかです:
- https://stackoverflow.com/questions/12734535/ajax-complete-without-page-reload
- PHP、jQueryを使用してモーダル形式でフィールドにデータを入力する
- 「location.reload()」はPOST / SESSIONデータを失いますか?(F5 / Ctrl + Rはデータを保持しますか?)
- 「location.reload()」はPOST / SESSIONデータを失いますか?(F5 / Ctrl + Rはデータを保持しますか?))
私はPHP開発者であり、AJAXの初心者なので、ここでの知識不足はご容赦ください。return false;
Ctrl + R効果をとで模倣しようとしましlocation.reload(true)
たが、どちらも機能しませんでした。私は何が欠けていますか?
ポップアップボックスのコードは次のとおりです。
$("#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());
}
}
});
私はあなたの助けに感謝します!