2010-09-24 1 views
1

У меня есть форма, которая отображается в div div iQuery FancyBox с идентификатором «mcform». При нажатии кнопки я вызвать эту функцию:Изменения содержимого в 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, но я не знаю, что с этим делать.

Страница находится здесь: http://dominiquesonmag.com/new.html

Спасибо за чтение!

ответ

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

, так как вы имеете в виду mcform по идентификатору он просто устанавливает значение на первом элементе он находит вместо изменить его к классу сказать mcformclass и попробовать $('.mcformclass').html(msg);, это должно изменить значение на обоих случаях mcform.

+0

Спасибо! Классовый подход решил это! Еще один ценный урок из SO. – jerrygarciuh

0

глядя на эту страницу, я заметил, что есть еще один DIV с ID = 'mcform' в почтовом чипе DIV. это может вызвать проблему, поскольку она пытается установить HTML в другой DIV.

также, несколько советов: Использование сериализации() для создания строки данных, и вы можете выбрать все элементы ввода в форме, чтобы установить их значения пустые строки:

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

Теперь, когда я думаю об этом, если вы удаляете форму из «#mcform», установив сообщение html, в нем не будет элементов ввода, чтобы установить пустую строку. вы можете полностью удалить эту строку. –

+0

Я только что просмотрел источник кода в FireFox, и поиск только видит строку mcform в id div и вызов $ ('# mcform'). Html (msg); Определенно не видя этого другого div с id ?! – jerrygarciuh