我希望左侧 div 保持不变,同时提交右侧客户表单,并在创建客户日志后,更新左侧 div(发票)中的客户列表(下拉列表)
根据您的描述,听起来您想要异步 POST 数据,然后重新加载包含的 div,而不执行完整的回发:
首先,使用 jQuery
将此行包含在您的 HTML 中:<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
使用 $.ajax() 异步 POST
$('#yourForm').submit(function(event) {
event.preventDefault();
$.ajax({
type: 'POST',
url: 'php/yourPHPScript.php',
data: $(this).serialize(),
dataType: 'json'
});
});
The $(this).serialize()
将 POST 表单中的所有输入,因此您可以在 php 代码隐藏中使用如下内容访问它们:$yourField = $_POST['yourField];
使用 $.load() 动态重新加载数据
因此,您已将数据发送回服务器,现在您想要重新加载 div 以反映服务器端更改,而不进行完整的回发。我们可以用 jQuery 来做到这一点$.load()
:
我们来写一个简单的函数来调用$.load()
:
function reloadDiv(){
$('#divToReload').load('scriptWithThisDivContent.php');
}
我们可以把它扔到更早的地方$.ajax()
异步 POST 返回服务器后执行的函数延迟对象 https://stackoverflow.com/questions/4866721/what-are-deferred-objects:
$('#yourForm').submit(function(event) {
event.preventDefault();
$.ajax({
type: 'POST',
url: 'php/yourPHPScript.php',
data: $(this).serialize(),
dataType: 'json'
}).done(function() {
reloadDiv();
});
});