0

親htmlフォーム内にajaxフォームがあります(私のコードではありません!)。ユースケースのシナリオでは、ユーザーはプロファイル情報の入力を求められ、ポップアップを開いてアカウントに複数の連絡先を追加し、残りのプロファイルの入力を続行します。

連絡先ボックスを使用すると、ユーザーは新しい連絡先を追加したり、既存の連絡先を編集したり、連絡先を削除したりできます。

問題は、ユーザーが追加、編集、または削除のためにajaxフォームを送信すると、ページ全体が更新され、親フォームの未保存の$_POSTデータが失われることです。

ページでEnterキーを押すか、Ctrl+$またはCmd+Rを押しても、$_POSTデータは失われません。これらは私がこのことを理解しようとして読んだ記事のいくつかです:

私は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());
      }
    }
  });

私はあなたの助けに感謝します!

4

1 に答える 1

0

local.reload()を削除して、ページの更新を停止します。完全なfunction(){}全体を削除できます。これは、ajax呼び出しが正常に返された後にのみ処理を行う場合に役立つためです。また、ダイアログを閉じる「変更を完了」などの別のボタンを追加することを検討してください。例えば:

 (...)
 buttons: {
    "Done": function() {
        $(this).dialog('close');
    },
(...)
于 2012-10-05T21:12:33.447 に答える