Tôi cần phải thay thế nội dung của div trong trang của tôi bằng kết quả html từ cuộc gọi ajax. Vấn đề là html có một số kịch bản cần thiết trong nó và có vẻ như jquery html() chức năng stripts chúng ra, Tôi cần phải lọc phản ứng và chỉ nhận được một div cụ thể.jquery html() dải ra các thẻ script
Tôi đang suy nghĩ về giải pháp khắc phục để trích xuất tất cả các thẻ tập lệnh từ phản hồi ajax và sau đó nối chúng vào DOM nhưng tôi gặp sự cố khi thực hiện điều đó.
Đây là mã của tôi;
$('a.link-vote').live('click',function(){
var idfeedback = $(this).attr('id').split('-')[1];
var href = $(this).attr('href');
$('.feedback-' + idfeedback + '-loader').show();
$.ajax({
type: "POST",
url: href,
success: function(response){
var x = $(response).find('#feedback-'+ idfeedback).html();
$('.feedback-' + idfeedback + '-loader').hide();
$('#feedback-'+ idfeedback).html(x);
}
});
return false;
});
tôi thấy chủ đề cũ này: jQuery - script tags in the HTML are parsed out by jQuery and not executed
nhưng là bất kỳ kết luận. Tôi đã thử các giải pháp được đề xuất ở đó nhưng không có giải pháp nào trong số đó hoạt động.
EDIT: Tôi dường như đã tìm thấy giải pháp thay thế dựa trên chủ đề cũ nhưng không đẹp;
var dom = $(response);
// var x = $(response).find('#feedback-'+ idfeedback).html();
$('.feedback-' + idfeedback + '-loader').hide();
//$('#feedback-'+ idfeedback).html(x);
$('#feedback-'+ idfeedback).html(dom.find('#feedback-'+ idfeedback).html());
dom.filter('script').each(function(){
var obj = $(this);
$('#feedback-'+ idfeedback + ' .feedback-comments').append(obj);
});
Phải có cách dễ dàng.
ăn trẻ sơ sinh, haahaha! –
'.HTMLHTML' hoạt động ok nhưng tập lệnh bên trong nội dung mới không được thực thi ... bất kỳ ý tưởng nào? – agpt
@Aman, vui lòng đăng câu hỏi với giải thích về những gì bạn đang cố gắng làm, những gì bạn đã thử và cách nó không thành công. – eyelidlessness