代码之家  ›  专栏  ›  技术社区  ›  jerrygarciuh

FancyBox Div中的内容更改仅在关闭和重新打开后出现

  •  1
  • jerrygarciuh  · 技术社区  · 14 年前

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

    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战斗,但我不知道该怎么做。

    页面在这里: http://dominiquesonmag.com/new.html

    谢谢你的阅读!

    2 回复  |  直到 13 年前
        1
  •  1
  •   Vinay B R    14 年前

    这作品

    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实例的值。

        2
  •  0
  •   Dave Thieben    14 年前

    查看那个页面,我注意到mailchip 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('');
       }
     });   
    }