jQuery做2次加载......并返回500错误

时间:2015-07-30 23:11:51

标签: php jquery ajax

由于某些原因,我的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")并且没有对它进行纠正。

2 个答案:

答案 0 :(得分:1)

jQuery加载与执行$ .get请求是一回事。只是一个包装。

.load()

所以你基本上是在发布一个帖子请求,里面有关于这部分代码的一些数据

$.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);
}