2012-10-05 77 views
0

我在父html表單(不是我的代碼!)中有一個ajax表單。用例場景是提示用戶輸入配置文件信息,打開彈出窗口爲該帳戶添加多個聯繫人,並繼續填寫配置文件的其餘部分。

聯繫人框允許用戶添加新聯繫人,編輯現有聯繫人或刪除聯繫人。

問題是當用戶提交添加,編輯或刪除的ajax表單時,整個頁面會刷新,並且父表單中任何未保存的$ _POST數據都會丟失。

如果我在頁面上或Ctrl + $或Cmd + R中輸入,$ _POST數據不會丟失。這是幾個我看過試圖找出這個東西出來的文章:

我是一個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()); 
     } 
    } 
    }); 

我感謝您的幫助!

+0

你在這裏的目標是什麼? –

+0

目標是添加多個聯繫人並將數據發送回父表單,而不會丟失尚未保存的父表單中的任何數據。 – deewilcox

回答

0

刪除local.reload()以停止刷新頁面。您可以刪除整個complete:function(){},因爲它僅在ajax調用成功返回後執行某些操作很有用。並考慮添加另一個按鈕,例如「完成更改」以關閉對話框。 例如:

(...) 
buttons: { 
    "Done": function() { 
     $(this).dialog('close'); 
    }, 
(...) 
+0

感謝您的幫助!我最終選擇了jQuery模式對話框,因爲我需要在不刷新頁面的情況下顯示新數據,也不需要從另一個文件中提取新數據。雖然這確實回答了這個問題。 – deewilcox