对不起,你的问题有点难以理解。我有点猜测,但听起来你在问如何在不刷新页面的情况下提交表单。如果是这样,您可以执行以下操作:
$('.menut').click(function() {
var phpFile = $(this).attr('id') +'.php';
$('#box1').load(phpFile, function() { // <-- this is your ready function
// once the form has been added to the page,
// add the 'submit' event listener
$('#contactForm').submit(function(e) {
// prevent the form from submitting regularly (causing a page refresh)
e.preventDefault();
// get the data from the form
var data = $(this).serialize();
// submit the form via AJAX and put the response in #box1
$('#box1').load($(this).attr('action'), data);
});
});
});
更新:
您的ready函数是您在 AJAX 调用中创建的要在内容加载完成时执行的函数(当内容准备好时)。它也可以称为回调函数、完成函数或成功函数。
看看我在上面第四行代码中添加的注释。我已经指出了我所说的准备好的功能。
在您的问题中,您使用了这个:
$.get(phpFile, function (data) {
$('#box1').html(data);
});
这相当于:
$('#box1').load(phpFile);
这会将响应(您的表单)phpFile
从#box1
. 这function (data) { ... }
是你准备好的功能。那就是您应该将submit
事件绑定到表单的地方。
如果您load()
按照我的建议切换到该方法,那么您只需将一个新函数(这将是您的就绪函数)作为该方法的第二个参数传递给该load()
方法,这是我在原始答案中给出的解决方案。