fancybox div中的内容更改仅在关闭和重新打开后显示

时间:2010-09-24 17:58:32

标签: jquery ajax fancybox

我有一个表单显示在一个id为“mcform”的jQuery FancyBox div中。单击按钮时,我调用此函数:

function postit() {
  $.ajax({
    type: "POST",
    url: 'listSubscribe.php',
    data: "fname=" + $("#fname").val() + "&lname=" + $("#lname").val() 
      + "&email=" + $("#email").val(),
     success: function(msg) {
        $('#mcform').html(msg);
        $("#fname").val('');
        $("#lname").val('');
        $("#email").val('');
    }
  });   
}

我可以在控制台中看到listSubscribe.php给出一个200头并返回文本。但是,除了值擦除外,表单不会更改。但是,如果我关闭FancyBox并重新打开它,看看listSubscribe.php返回的文本是否按预期替换了表单的html。

任何人都知道会导致这种情况的原因是什么?我假设我正在与FancyBox战斗,但我不知道该怎么做。

Page在这里:http://dominiquesonmag.com/new.html

感谢阅读!

2 个答案:

答案 0 :(得分:1)

这有效

function postit() {
 $.ajax({
   type: "POST",
   url: 'listSubscribe.php',
   data: $("#mcform form").serialize(),
   success: function(msg) {
       $('#fancy_content').children().children().html(msg);
        $("#fname").val('');
        $("#lname").val('');
        $("#email").val('');
   }
 });   
}

因为您通过id引用mcform,它只是在找到的第一个元素上设置值,而是将其更改为类mcformclass并尝试$('.mcformclass').html(msg);,这应该更改mcform的两个实例上的值。

答案 1 :(得分:0)

查看该页面,我注意到邮件芯片DIV中还有另一个ID ='mcform'的DIV。这可能会导致问题,因为它试图将HTML设置为不同的DIV。

另外,有几个提示:使用serialize()创建数据字符串,您可以选择表单中的所有输入元素将其值设置为空字符串:

function postit() {
 $.ajax({
   type: "POST",
   url: 'listSubscribe.php',
   data: $("#mcform form").serialize(),
   success: function(msg) {
       $('#mcform').html(msg);
       $("#mcform input").val('');
   }
 });   
}