我在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);
});
答案 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
});
答案 1 :(得分:0)
在您的示例中,您只是遗漏了一小部分信息:您想要更新哪个元素。它可以是HTML body
,也可以是div
或section
。
假设您将整个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元素的主体。
就是这么简单。