2010-06-24 24 views
5

Phản hồi ajax (jquery) của tôi (html) cung cấp cho tôi toàn bộ mã nguồn html vì nó tìm nạp trang giả.Đọc một phần của phản hồi html ajax

Câu trả lời có phần giống như dưới đây:

 

<html> 
<head> 
... 
... 
</head> 
<body> 
. 
..... 
. 

....... 

<div id="content"> 
    content i want to extract 
</div> 
............. 
.......... 
............. 

</body> 
</html> 

Tôi cần giúp đỡ như sau:

1) Có thể đọc bất cứ điều gì chỉ là giữa <div id='content'></div>? nếu có, làm thế nào?

2) nếu # 1 là không thể, làm cách nào tôi có thể trích xuất nội dung từ <div id='content'></div>?

Mã này tôi đã cố gắng:

 

    /*Ajax*/ 
    $jq(function(){ 
    alert ("Doc ready"); 
     $jq("#content a.next-page").bind("click", function(e){ 
      alert ("Hey!"); 
      /*Make the call*/ 
      $jq.ajax({ 
       url: "/page/2", 
       type: "get", 
       cache: false, 
       data: "", 
       error: function(){alert ("No data found for your search.");}, 
       success: function(results){ 
        //$searchPanel.find("tbody").empty().append(results); 
        //$searchPanelHolder.css({"display":"block"}); 
        alert (results.find("div[id='content']").html()); 
        e.preventDefault(); 
       } 
      }); 
      e.preventDefault(); 
     }); 
    }); 

Bất kỳ giúp đỡ về vấn đề này được nhiều đánh giá

Rất cám ơn, Racky

+1

Justa nhận xét chung; kể từ khi bạn đang tìm nạp một trang html trực tiếp mà không cần đi qua một "cầu nối" phụ trợ, tôi cho rằng trang đó nằm trên tên miền của riêng bạn, cùng một trang nơi tập lệnh của bạn đến từ đó. Trong trường hợp này, bạn nên dành thời gian để phát triển một tập lệnh PHP (hoặc bất kỳ thứ gì) mà gõ trực tiếp vào cơ sở dữ liệu của bạn và trả về dữ liệu bạn quan tâm theo định dạng JSON hoặc XML. Bằng cách này, đoạn mã JS của bạn sẽ hoạt động ngay cả khi bạn thay đổi đánh dấu của trang đó. –

+0

Bạn nên kiểm tra câu trả lời của ai đó là câu trả lời đúng. – Mark

Trả lời

0

Vâng, đó là có thể, nhưng bạn cần để làm cho một đối tượng jQuery ra khỏi nó trước tiên.

Thay đổi dòng này:

alert (results.find("div[id='content']").html()); 

này:

alert ($(results).find("div[id='content']").html()); 

hoặc, tốt hơn nữa, như thế này:

alert ($(results).find("#content").html()); 

EDIT:

Có vẻ như yếu tố bạn muốn là con trực tiếp của body, bạn sẽ cần phải sử dụng .filter() thay vì từ body dường như bị loại trừ khỏi đối tượng jQuery. Có vẻ như chỉ nội dung của nó được bao gồm.

alert ($(results).filter("#content").html()); 
+0

Cảm ơn một tấn :) Điều này đã làm việc quá! – racky

+0

@ racky - Bạn được chào đón. o) FYI, sử dụng '.find()' là một * nhỏ * bit nhanh hơn '$ (" # nội dung ", kết quả)' vì jQuery chỉ chuyển đổi nó thành '.find()'. Tuy nhiên, sẽ không có sự khác biệt đáng chú ý. – user113716

+0

hey cảm ơn một lần nữa, một vấn đề nhỏ, bây giờ tôi nhận được các dữ liệu cần thiết với sự giúp đỡ của các bạn. những gì tôi đang làm là xóa nội dung cũ khỏi div [$ ("# content").trống()] và nối dữ liệu mới được truy xuất [.append (newdata)]. Nhưng điều này một cách kỳ lạ tải lại trang vào một trang trống! bất kỳ suy nghĩ nào về điều này? – racky

1

thì sao?

$("#content", results).html() 
+0

Cảm ơn một tấn :) Điều đó đã hiệu quả! – racky

Các vấn đề liên quan