用来自AJAX的内容替换HTML返回数据

时间:2016-05-19 22:39:42

标签: javascript php html ajax

我在HTML文件正文的末尾调用了一个脚本。此脚本 HTML文件 中的 收集的发送到PHP文件 < / strong>检查一切是否正常,如果是,计算一些数字并输出相同的HTML文件,使用这些新计算的数字更新旧数字。

我的问题是,我是否可以获取此HTML输出并用新的替换旧页面,而无需刷新页面并保持脚本仍然有效?

脚本的一部分:

var datas = {action: 'update', subject: sendSub, criteria: changed[5], creditos: changed[4], g1: changed[0], g2: changed[1], g3: changed[2], g4: changed[3]};
    $.post('/edit.php', datas).done(function (data) {
        //What to do here?
        console.log(data); 
    });

2 个答案:

答案 0 :(得分:1)

$.post('/edit.php', datas).done(function (data) {
    $('#idOfSomeDiv').html(data);
});

无论PHP文件是什么,echos都会覆盖id为idOfSomeDiv的div的内容。

因此,如果您身体中的第一个元素是<div id="wrap">,那么请执行:

$.post('/edit.php', datas).done(function (data) {
    $('#wrap').html(data);
});

并且您从PHP端回显的任何HTML代码都将显示在页面上。请注意,注入的元素将不再适用于此类jQuery:

$('#myAnchortag').click(function(){
    //code in here
});

但是如果你使用

它将一直有效
$(document).on('click', '#myAnchortag', function(){
    //code in here
});

The examples linked in this question可能有助于审核。

答案 1 :(得分:0)

在您的示例中,您只是遗漏了一小部分信息:您想要更新哪个元素。它可以是HTML body,也可以是divsection

假设您将整个body替换为Ajax调用的结果。在Ajax success回调中,您只需将Ajax调用的返回值放入body

var datas = {action: 'update', subject: sendSub, criteria: changed[5], creditos: changed[4], g1: changed[0], g2: changed[1], g3: changed[2], g4: changed[3]};
    $.post('/edit.php', datas).done(function (data) {
        $("body").html(data);  // Replace the body's HTML with the contents of data
        console.log(data); 
    });

确保您正在执行或依赖的任何Javascript代码都存在于正文中。在这种情况下,在头部加载Javascript,否则在更换主体时它将消失。

如果您想要更新div(或section),它用于包含Ajax调用的结果:

<div id="results"></div>

在这种情况下,您的Ajax success回调将使用Ajax的返回值替换div内容:

var datas = {action: 'update', subject: sendSub, criteria: changed[5], creditos: changed[4], g1: changed[0], g2: changed[1], g3: changed[2], g4: changed[3]};
    $.post('/edit.php', datas).done(function (data) {
        $("#results").html(data);  // Replace the div's HTML with the contents of data
        console.log(data); 
    });

这就是你真正需要做的一切。

如果您碰巧在数据中有脚本,则不需要使用$(document).ready()保护它们,因为文档已经加载,您只需要替换div元素的主体。

就是这么简单。