2013-08-28 39 views
52

Tôi muốn tải lại một div khi nhấp vào nút. Tôi không muốn tải lại trang đầy đủ.Làm mới/tải lại nội dung trong Div bằng cách sử dụng jquery/ajax

Đây là mã của tôi:

HTML:

<div role="button" class="marginTop50 marginBottom"> 
    <input type="button" id="getCameraSerialNumbers" value="Capture Again" class="disabled" /> 
    <input type="button" id="confirmNext" value="Confirm & Proceed" class="disabled marginLeft50" /> 
</div> 

On click <input type="button" id="getCameraSerialNumbers" value="Capture Again"> Nút một <div id="list">....</div> nên tải lại mà không cần tải hoặc làm mới trang đầy đủ.

Dưới đây là Jquery mà tôi đã cố gắng, nhưng không làm việc: -

$("#getCameraSerialNumbers").click(function() { 
    $("#step1Content").load(); 
}); 

Xin gợi ý.

Đây là DIV trên trang của tôi, có chứa Hình ảnh và số sê-ri của một số sản phẩm ... Sẽ đến từ cơ sở dữ liệu lần đầu tiên trên Tải trang. Nhưng là người dùng phải đối mặt với một số vấn đề anh ta sẽ bấm vào nút "Capture Again" "<input type="button" id="getCameraSerialNumbers" value="Capture Again">" sẽ tải lại những thông tin đó.

HTML Mã của Div: -

<div id="step1Content" role="Step1ShowCameraCaptures" class="marginLeft"> 

<form> 
    <h1>Camera Configuration</h1> 
    <!-- Step 1.1 - Image Captures Confirmation--> 
    <div id="list"> 
     <div> 
      <p> 
       <a id="pickheadImageLightBox" data-lightbox="image-1" title="" href=""> 
        <img alt="" id="pickheadImage" src="" width="250" height="200" /> 
       </a> 
      </p> 
      <p> 
       <strong>Pickhead Camera Serial No:</strong><br /> 
       <span id="pickheadImageDetails"></span> 
      </p> 
     </div> 
     <div> 
      <p> 
       <a id="processingStationSideImageLightBox" data-lightbox="image-1" title="" href=""> 
        <img alt="" id="processingStationSideImage" src="" width="250" height="200" /> 
       </a> 
      </p> 
      <p> 
       <strong>Processing Station Top Camera Serial No:</strong><br /> 
       <span id="processingStationSideImageDetails"></span> 
      </p> 
     </div> 
     <div> 
      <p> 
       <a id="processingStationTopImageLightBox" data-lightbox="image-1" title="" href=""> 
        <img alt="" id="processingStationTopImage" src="" width="250" height="200" /> 
       </a> 
      </p> 
      <p> 
       <strong>Processing Station Side Camera Serial No:</strong><br /> 
       <span id="processingStationTopImageDetails"></span> 
      </p> 
     </div> 
     <div> 
      <p> 
       <a id="cardScanImageLightBox" data-lightbox="image-1" title="" href=""> 
        <img alt="" id="cardScanImage" src="" width="250" height="200" /> 
       </a> 
      </p> 
      <p> 
       <strong>Card Scan Camera Serial No:</strong><br /> 
       <span id="cardScanImageDetails"></span> 
      </p> 

     </div> 
    </div> 
    <div class="clearall"></div> 

    <div class="marginTop50"> 
     <p><input type="radio" name="radio1" id="optionYes" />Yes, the infomation captured is correct.</p> 
     <p><input type="radio" name="radio1" id="optionNo" />No, Please capture again.</p> 
    </div> 
    <div role="button" class="marginTop50 marginBottom"> 
     <input type="button" id="getCameraSerialNumbers" value="Capture Again" class="disabled" /> 
     <input type="button" id="confirmNext" value="Confirm & Proceed" class="disabled marginLeft50" /> 
    </div> 
</form> 

Bây giờ trên bấm vào nút <input type="button" id="getCameraSerialNumbers" value="Capture Again" class="disabled" />, thông tin mà là ở <div id="list">... </div> nên được nạp lại.

Vui lòng cho tôi biết nếu bạn cần thêm thông tin.

+1

Không có đủ chi tiết ở đây. Bạn đang cố lấy nội dung từ đâu? Bạn có mã nào để làm điều đó? Có lỗi nào không? Tại sao nó 'không hoạt động'? –

+0

Bạn chính xác muốn tải lại điều gì? Bạn có cần phải gọi cơ sở dữ liệu? – Alvaro

+0

Nội dung bên trong # step1Content và nội dung bạn muốn sau khi nhấp vào nút? – jcubic

Trả lời

30

tôi luôn luôn sử dụng này, hoạt động hoàn hảo.

$(document).ready(function(){ 
     $(function(){ 
     $('#ideal_form').submit(function(e){ 
       e.preventDefault(); 
       var form = $(this); 
       var post_url = form.attr('action'); 
       var post_data = form.serialize(); 
       $('#loader3', form).html('<img src="../../images/ajax-loader.gif" />  Please wait...'); 
       $.ajax({ 
        type: 'POST', 
        url: post_url, 
        data: post_data, 
        success: function(msg) { 
         $(form).fadeOut(800, function(){ 
          form.html(msg).fadeIn().delay(2000); 

         }); 
        } 
       }); 
      }); 
     }); 
     }); 
+1

Tôi nghĩ bạn cũng có thể xóa 'delay' vì nó, theo [documentation] (http://api.jquery.com/delay/), trì hoãn _subsequent_ calls. –

+0

Ồ Vâng, nó chỉ là một hiệu ứng đẹp! ;) –

+0

'$ ('# loader3', biểu mẫu);' chứa biểu mẫu? tôi có thể xóa cái này không? bởi vì tôi đang sử dụng thay đổi methed không gửi. – 151291

5

Điều bạn muốn là tải lại dữ liệu nhưng không tải lại div.

Bạn cần thực hiện truy vấn Ajax để lấy dữ liệu từ máy chủ và điền vào DIV.

http://api.jquery.com/jQuery.ajax/

7

Trong khi bạn chưa cung cấp đủ thông tin để thực sự chỉ ra nơi bạn nên kéo dữ liệu từ, bạn không cần phải kéo nó từ nơi nào đó. Bạn có thể chỉ định URL đang tải, cũng như xác định tham số dữ liệu hoặc chức năng gọi lại.

$("#getCameraSerialNumbers").click(function() { 
    $("#step1Content").load('YourUrl'); 
}); 

http://api.jquery.com/load/

+0

Xin lỗi nếu các bạn không hiểu được câu hỏi của mình. – UID

32
$("#myDiv").load(location.href+" #myDiv>*",""); 
+7

Vui lòng cung cấp giải thích theo câu trả lời của bạn, nó sẽ giúp người khác hiểu tại sao bạn nghĩ đó là câu trả lời hay – m4rtin

+20

@ php_coder_3809625 Thành thật mà nói, Peca trả lời một vài tháng sau khi Juan :) – Shekhar

+3

@Juan: bạn có thể vui lòng giải thích những gì nó làm chính xác. thanks –

78
$("#mydiv").load(location.href + " #mydiv"); 
+4

Đây là tổ chứC#mydiv trong #mydiv cho mọi cuộc gọi tải. Phiên bản chính xác được cung cấp bởi Juan. – Mathias

+0

Đây không phải là AJAX như các câu hỏi nói. –

+1

Không nhất thiết phải là AJAX, nhưng mang lại trải nghiệm người dùng mong đợi –

5

Hãy thử

mã html này đang

<div id="refresh"> 
    <input type="text" /> 
    <input type="button" id="click" /> 
</div> 

jQuery

<script> 
    $('#click').click(function(){ 
    var div=$('#refresh').html(); 
    $.ajax({ 
     url: '/path/to/file.php', 
     type: 'POST', 
     dataType: 'json', 
     data: {param1: 'value1'}, 
    }) 
    .done(function(data) { 
if(data.success=='ok'){ 
     $('#refresh').html(div); 
}else{ 
// show errors. 
} 
    }) 
    .fail(function() { 
     console.log("error"); 
    }) 
    .always(function() { 
     console.log("complete"); 
    }); 
    }); 

</script> 

con đường mã trang php =/path/t o/tập tin.php

<?php 
    header('Content-Type: application/json'); 
    $done=true; 
    if($done){ 
     echo json_encode(['success'=>'ok']); 
    } 
?> 
8

Khi phương pháp này thực hiện, nó lấy nội dung của location.href, nhưng sau đó jQuery phân tích các tài liệu trở lại để tìm các phần tử với divId. Phần tử này, cùng với nội dung của nó, được chèn vào phần tử có ID (divId) của kết quả và phần còn lại của tài liệu đã truy xuất bị hủy.

$ ("# divId"). Load (location.href + "#divId> *", "");

hy vọng điều này có thể giúp một người nào đó hiểu

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