在Jquery发送帖子后,Ajax会自动刷新DOM吗?

时间:2015-11-02 11:50:29

标签: jquery ajax

我刚刚开始使用Ajax而且我并没有完全迷失......不确定它是如何运作的。

我认为Ajax将(通过示例发布)发送到服务器并返回x数据,但该数据会自动添加到DOM(无需重新加载页面)。我有以下jquery ajax脚本:

$.ajax({
    method: "POST",
    url: "/url",
    data: { 
        'varname': varname, 
        'varname2': varname2
        // etc
    }
});

return false;

我刚刚学会了(但不知怎的,我已经在期待这个......)它返回的内容是数据内部并且它与浏览器(当前)DOM或html没有同步。我做了一个警报(数据)并看到了全新的html编译代码:

}).done(function(data) {
    alert(data);
});

return false;

问题是:我应该如何将我需要的数据添加到当前的html中。我的意思是,如果发送的变量触发新脚本(并生成新内容),我如何放置新内容,刷新或更新旧内容?

5 个答案:

答案 0 :(得分:3)

Ajax只是一个术语,用于从JavaScript发出HTTP请求,而不加载新页面。

  

我刚刚学会了(但不知怎的,我已经在期待这个......)它返回的内容是数据,并且它与浏览器(当前)DOM或html没有同步。

正确。数据可供JavaScript使用,以便您的代码可以随意执行任何操作。

  

问题是:我应该如何将我需要的数据添加到当前的html中。

DOM操作。

jQuery提供了许多方法来帮助解决这个问题,包括replaceWithappend

答案 1 :(得分:0)

而不是使用.done 您可以将代码编辑为

x-coredata://E67F6A37-4E56-4A55-A01E-940D8BD9EBE9/Users/p14

使用上面的代码,您可以毫不费力地从服务器返回数据。

答案 2 :(得分:0)

不,您的脚本必须处理来自服务器的响应并决定如何处理它。

如果您希望插入从ajax请求返回的html并将其插入到DOM /页面中,那么您可以查看htmlappendinsertAfter等函数来完成此操作

示例可能如下所示:

}).done(function(data) {
    $('#someContainerId').html(data);
});

答案 3 :(得分:0)

首先,您必须设置所请求的网页(网址)以仅回复您需要的数据(例如,您可能不需要<html></html>之间的整个网页。

在PHP文件的开头使用

if(!empty($_POST['PASSED_VARIABLE'])) {
    ...
    // Manipulate the data.
    ...

    echo $data; // Echo the result.
}

完成Ajax功能后,您可以将收到的数据插入DOM:

.done(function(data) {
    $('div#results').html(data); // Or any other DOM manipulation.
})

答案 4 :(得分:0)

解决方案非常简单:拿出我需要的东西并打印出来:

    }).done(function(data) {
        var new_content = $(data).find('#search');
        $('#search').html(new_content);
    });

感谢您的回答。