使用Ajax上下文刷新页面的一个部分

时间:2013-12-03 11:30:49

标签: jquery html ajax refresh

当用户点击“清除”按钮时,我正在尝试刷新页面的一部分,目前我正在使用一些代码,我在这里找到了另一个答案:

$('.clear').click(function () {
    $.ajax({
      url: "",
      context: document.body,
      success: function (s, x) {
        $(this).html(s);
      }
    });
});

这会重新加载整个文档正文,如何定位特定的div或类?

  context: document.body.somediv?

7 个答案:

答案 0 :(得分:7)

jQuery API关于context选项:

  

此对象将成为所有与Ajax相关的回调的上下文。通过   默认情况下,上下文是表示ajax设置的对象   在调用中使用($ .ajaxSettings与传递给的设置合并   $阿贾克斯)。例如,将DOM元素指定为上下文将   为请求的完整回调创建上下文,如下所示:

$.ajax({
  url: "test.html",
  context: document.body
}).done(function() {
  $( this ).addClass( "done" );
});

因此,context选项是在回调函数中设置this对象的范围。默认情况下,它是ajax对象,具有当前配置:

$.ajax({
    url: ""
}).done(function(){
    console.log(this); 
    // logs: { url: "", type: "GET", etc... }
    // 
});

如果您希望定位特定部分以加载响应,您可以使用jQuery查找元素并将响应放在该元素中,context与您无关:

$.ajax({
  url: "",
}).success(function(data){
  // data is your response
  $(".some-element").html(data);
});

但是,您可以使用context使配置更容易理解,如下所示:

$.ajax({
  url: "",
  context: $(".some-element")
}).success(function(data){
  $(this).html(data);
  // $(this) refers to the context object, in this case $(".some-element")
});

如果您现在希望将ajax响应加载到页面上的其他位置,则只需更改context参数上的选择器。

答案 1 :(得分:2)

尝试

 success: function (s, x) {
    $('#yourdiv').html(s);//yourdiv is id of div u want to update
    }

也可以通过类等

访问div
$('.classOfDiv')

您是否尝试过使用上下文

context: {div:$('#yourdiv')}

成功

this.div.html(s);

答案 2 :(得分:1)

您可以使用DIV id或类名来定位特定的div元素。

<div id="div1" class="class1">
    <div id="div2" class="class2">
    </div>
</div>


$('#div2').html(your-text); // using ID

$('.class2').html(your-text); // using Class

答案 3 :(得分:1)

如果您希望ajax输出反映在特定div上,请确保div具有Id或类,以便我们可以轻松地在DOM上跟踪它。 假设div具有类content-output,那么以下脚本将适合您。

$('.clear').click(function () {
$.ajax({
url: "",
success: function (s, x) {
$('.content-output').html(s);
}
});
});

答案 4 :(得分:1)

如果我理解正确,您只需从点击事件中调用.load()并将其传递给链接的href:

HTML:

<a class="link" href="page.php?id=10">Click Here<a>

JS:

$(".link").click( function(event) {
    event.preventDefault();
    $("#text").load($(this).attr("href"));
});

see the demo

答案 5 :(得分:1)

$('.clear').click(function () {
$.ajax({
url: "",
//context: document.body,  //you don't need a context
success: function (s, x) {
$(.myClass).html(s);       
//now the target is class myClass or you can use 
//#myID if you want to have an id as target
}
});
}); 

答案 6 :(得分:1)

如果您只想通过Ajax加载特定的div,那么使用jquery load 这样的事件

//clear button click event
$('.clear').click(function () {

  // load ajax response inside result id (html element)
  $( "#result" ).load( "URL" );

});

如果你要执行某种操作,那么在load事件中添加函数,就像这样

$( "#result" ).load( "URL", function() {
  alert( "Load was performed." );
});