Zwracam dużą porcję kodu HTML z połączenia $.ajax
. Łańcuch pochodzący z PHP ma na początku dwie linie podziału, np.Przerwy linii w jQuery ajax wywołanie zwrotne html powoduje błędy
$data = "
<div>
<p>Here is some text</p>
</div>";
Oto wezwanie $.ajax
:
$('form#form_id').submit(function(e){
e.preventDefault();
$form = $(this);
$.ajax({
url: $form.attr('action'),
type: $form.attr('method'),
data: $form.serialize(),
dataType: 'html',
success: function(data) {
var $html = $($.parseHTML(data));
$html.appendTo('#container_id').hide().fadeIn(300);
}
});
});
Wszystko działa aż dodać .hide().fadeIn(300)
w którym momencie rzuca: TypeError: 'undefined' is not an object (evaluating 'hooks.cur = fn') jquery.js:1925
. Jeśli usunę podział linii, to działa. Używam $.parseHTML
ponieważ jQuery mówi:
Jeśli ciąg jest znany jako HTML, ale może rozpocząć z dowolnego tekstu, który nie jest tag HTML, przekazać go do jQuery.parseHTML(), która zwróci tablica węzłów DOM reprezentujących znaczniki. Kolekcja jQuery może być utworzona z tego, na przykład: $ ($ .seseHTML (htmlString)).
Każdy pomysł, co się dzieje?
Ewentualnie '.parseHTML()' jest exploiding danych HTML do tablicy nie tylko z obiektami jQuery w nim, że jest '\ n' lub coś podobnego się dzieje. –
Spróbuj odfiltrować węzeł tekstowy i sprawdź, czy błąd nie zniknął. '.filter ('*')'. – Musa
Bingo. 'var $ html = $ ($ .parseHTML (dane)). filter ('*');' pracował. Uczyń tę odpowiedź, a ja ją zaakceptuję. –