由于某些原因,我的jQuery AJAX请求成功提交了第一个POST,但随后它导致第二个GET不提交帖子数据,导致索引未定义错误。使用Firebug查看日志时,我看到第一个POST成功发布了我要提交的数据,但是它会执行第二个GET请求,将整个" SecondPage.php"文件没有发布任何数据,覆盖它设置为显示的DIV。
以下是代码:
$(document).on('change', '.SubmitRadioButton', function(e) {
e.preventDefault();
$.ajax({
type: 'post',
url: 'SecondPage.php',
cache: false,
data: $(this.form).serialize(),
success: function(html) {
window.alert('Successfully submitted AJAX request!');
$("#DIVinFirstPage").load("SecondPage.php");
}
});
return false;
});
我做错了什么?
另外 - 我注意到在第二个PHP页面上我必须引用我的" Header.php"执行所有功能的文件。为什么使用这个ajax请求,它不会像PHP包含(" File.php")那样从页面继承所有规则?有没有办法解决这个问题,所以我不必重新初始化并重新下载所有的PHP和JavaScript文件?我在PHP中尝试了include_once(" File.php")并且没有对它进行纠正。
答案 0 :(得分:1)
jQuery加载与执行$ .get请求是一回事。只是一个包装。
所以你基本上是在发布一个帖子请求,里面有关于这部分代码的一些数据
$.ajax({
type: 'post',
url: 'SecondPage.php',
cache: false,
data: $(this.form).serialize(),
success: function(html) {
window.alert('Successfully submitted AJAX request!');
然后在成功的内部向此行的同一页面发出get请求。
$("#DIVinFirstPage").load("SecondPage.php");
然后页面SecondPage.php给你一个Index Undefined Error,因为SecondPage.php正在等待.load调用中没有发送的POST数据。
由于Index Undefined是一个php错误,它会将500错误代码发送给浏览器。
因此,您需要检查变量是否使用SecondPage.php上的isset设置,或者让负载调用另一个不期望任何数据的页面。
另一种方法是让脚本在单独的php文件上处理POST,然后将.load运行到表单的第二页。
答案 1 :(得分:0)
在第一个POST请求的成功回调中,执行JQuery load()。根据文档http://api.jquery.com/load/,“它大致相当于$ .get(url,data,success)”。
您看到您的成功回调函数有一个名为“html”的参数。这是在POST请求之后从SecondPage.php向您提供的响应。我想这包含了你想要填充div的内容。
也许试试:
success: function(html) {
window.alert('Successfully submitted AJAX request!');
$("#DIVinFirstPage").html(html);
}