2012-01-10 25 views
25

ngớ ngẩn câu hỏi nhanh:jquery load() và thêm

Tôi có của tôi:

$('#result').load('ajax/test.html'); 

nhưng những gì nếu tôi không muốn chèn nội dung tải của tôi vào #result, nhưng thêm vào trước nó để # kết quả, duy trì tất cả các yếu tố tiền lệ? Có thể tạo một biến, tải nó với nội dung và sau đó nối thêm hoặc thêm nó vào #result của tôi? Tôi hình dung một số kịch bản khác với biến mới của tôi, tôi có thể thao tác nó trước khi chèn nó vào DOM.

Trả lời

19
var response; 
$.ajax({ type: "GET", 
    url: "ajax/test.html", 
    async: false, 
    success : function(text) 
    { 
     response= text; 
    } 
}); 
$('#result').prepend('<div>'+response+'</div>'); 

Bạn cần "async: false" để bạn chờ đợi phản ứng. Nếu bạn không chờ đợi (cuộc gọi không đồng bộ Ajax bình thường), bạn sẽ có biến không xác định trong một khoảng thời gian không xác định, vì vậy nó có thể nguy hiểm.

EDIT: Khi nhận xét đúng, sử dụng "async: false" không bình thường và rất xấu. Thông thường bạn sẽ thao tác phản hồi và chèn nó vào DOM bên trong gọi lại thành công. Việc sử dụng các async chỉ sẽ được yêu cầu nếu bạn thực sự cần phản ứng trong một biến chờ đợi một điều khác để sử dụng biến đó, không phải là một điều phổ biến xảy ra.

$.ajax({ type: "GET", 
    url: "ajax/test.html", 
    success : function(text) 
    { 
     $('#result').prepend('<div>'+text+'</div>'); 
    } 
}); 
+0

điều cần biết, có thể ajax (get) sẽ tốt hơn so với get() ? – Daniele

+1

Không, $ .get là dạng ngắn của $ .ajax (get). Nhưng trong $ .get bạn không thể thêm tham số nhiều hơn như "async" một. $ .load là một dạng ngắn cũng cho $ .ajax (get) để tải đáp ứng que trong phần tử. Điều tương tự với $ .post() là viết tắt của $ .ajax (type: "POST") –

+0

Tuyệt vời, tôi sẽ đi ajax()! – Daniele

15

Một cách nhanh chóng có thể là:

$('#result').append($('<div>').load('ajax/test.html')); 
+1

tốt đẹp! nhưng nếu tôi var myData = $ .load. ('ajax/test.html')); ? – Daniele

+0

đơn giản và làm việc – Cleverson

31

Bạn có nghĩa là một cái gì đó như thế này?

var content; 
$.get('ajax/test.html', function(data){ 
    content= data; 
    $('#result').prepend(content); 
}); 

Điều đó lưu nội dung đã tải của bạn vào biến trước và bạn có thể thao tác nội dung đó theo bất kỳ cách nào bạn muốn.

+0

đó là nó! cảm ơn bạn! – Daniele

+0

Tuyệt vời và dễ dàng sollution, Cảm ơn! – Tober

5

Làm một bài jQuery và tải các dữ liệu vào một vaiable và thêm vào trước để div mong muốn

$.post('ajax/test.html', function(data) { 
    $('#result').prepend(data); 
}); 
+0

một số gợi ý get() hoặc ajax (get) tại sao post()? – Daniele

+0

@ Daniele: cả hai sẽ hoạt động. bạn có thể dùng get() đơn giản, đây là dạng ajax đơn giản nhất. tôi sử dụng bài nếu các giá trị chuỗi truy vấn lớn. – Shyju

+0

tôi đã cập nhật câu trả lời để giúp tránh nhầm lẫn với người đọc trong tương lai. – Shyju

3

Tôi nghĩ rằng đây là một soluction ngắn

$.get("ajax/test.html",function (dados) { $("#result").append(dados);}); 
Các vấn đề liên quan