使用jquery / ajax刷新/重新加载Div中的内容


79

我想在单击按钮时重新加载div。我不想重新加载整个页面。

这是我的代码:

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>

单击<input type="button" id="getCameraSerialNumbers" value="Capture Again">按钮后,<div id="list">....</div>应该重新加载而不加载或刷新整个页面。

以下是我尝试过但无法正常工作的Jquery:-

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

请提出建议。

这是我页面上的DIV,其中包含一些产品的图片和序列号...这将是第一次加载时来自数据库的信息。但是,如果用户遇到问题,他将单击“再次捕获”按钮“ <input type="button" id="getCameraSerialNumbers" value="Capture Again">”,这将再次加载这些信息。

Div的HTML代码:-

<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>

现在单击<input type="button" id="getCameraSerialNumbers" value="Capture Again" class="disabled" />按钮,<div id="list">... </div> 应该再次加载其中的信息。

如果您需要更多信息,请告诉我。


1
这里没有足够的细节。您在哪里尝试获取内容?您必须执行什么代码?有没有错误?为什么它“不起作用”?
罗里·麦克罗桑

您到底要重新加载什么?您需要调用数据库吗?
2013年

单击该按钮后,#step1Content里面有什么内容?
jcubic

问题是您如何首先填写DIV #list内容?
A. Wolff 2013年

Answers:


43

我一直使用它,效果完美。

$(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
我认为您也可以删除delay,因为根据文档,它会延迟后续调用。
Domenico De Felice

哦,是的,效果很好!;)
Gucho Ca

$('#loader3', form);包含表格吗?我可以删除吗?因为我正在使用更改方法而不提交。
151291 2015年

151291是,它是我表格的ID,可根据需要进行更改。
Gucho Ca

1
form是包裹在jquery中,所以您为什么这样做 $(form).fadeOut(800, function(){
杰克·

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

请始终注意第二个 号之前的空格,否则上面的代码将返回嵌套在您想要的DIV中的整个页面。总是放空间。


9
对于每个要加载的调用,这会将#mydiv嵌套在#mydiv中。Juan提供了正确的版本。
Mathias 2015年

如问题所示,这不是AJAX。
古乔岛Ca

2
它不一定是AJAX,但可以提供预期的用户体验
Dale Clifford

是否可以在uri中包含参数?例如: $("#relation-body").load(location.href+" #relation-body?organization_id="+item.id);
Koen B.

这会影响jquery的调用,因为它会在DOM上创建动态元素,jquery会失败。因此,请使用onjquery中的事件,而不是直接访问此div中的元素
Thamilhan

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

10
请在回答中提供解释,这将帮助其他人理解为什么您认为这是对问题的很好答案。
m4rtin 2014年

21
@ php_coder_3809625老实说,佩卡在胡安(Juan)之后的几个月回答了:)
Shekhar

3
@Juan:请您解释一下它的确切作用。谢谢
Gaurav Parek 2015年

1
我将如何调整它以重新加载所有孩子?
瑞奇·巴尼特

我可以使用由id插入的类吗?
TarangP

18

执行此方法时,它会检索的内容location.href,但jQuery会解析返回的文档以找到带有的元素divId。该元素及其内容将以具有divId结果ID()的元素插入到元素中,而其余​​的检索文档将被丢弃。

$(“#divId”)。load(location.href +“ #divId> *”,“”);

希望这可以帮助某人理解


7

您想要的是再次加载数据,但不重新加载div。

您需要进行Ajax查询,以从服务器获取数据并填充DIV。

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


7

尽管您没有提供足够的信息来实际指示应该从何处提取数据,但是您确实需要从某处提取数据。您可以在加载中指定URL,还可以定义数据参数或回调函数。

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

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


5

试试这个

HTML代码

 <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>

php页面代码path = / path / to / file.php

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

2

您需要从加载数据的位置添加源。

例如:

$("#step1Content").load("yourpage.html");

希望对您有帮助。


1

我知道主题很旧,但是您可以将Ajax声明为变量,然后使用函数在所需的内容上调用该变量。请记住,如果您需要与Ajax不同的元素,则需要在Ajax中进行调用。

例:

Var infogen = $.ajax({'your query')};

$("#refresh").click(function(){
  infogen;
  console.log("to verify");
});    

希望有所帮助

如果不尝试:

$("#refresh").click(function(){
      loca.tion.reload();
      console.log("to verify");
    });    

0
$(document).ready(function() {
var pageRefresh = 5000; //5 s
    setInterval(function() {
        refresh();
    }, pageRefresh);
});

// Functions

function refresh() {
    $('#div1').load(location.href + " #div1");
    $('#div2').load(location.href + " #div2");
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.