jquery发送post数据但没有响应

时间:2013-03-11 18:32:19

标签: jquery jquery-ui-dialog

我有一个对话框,其中包含名称和ID为“buildtask”的表单。用Firebug看它就完全成型了。 jquery代码与同一页面上其他成功的对话框表单提交相同。 问题似乎与$(this).dialog("close");有关,因为如果我对此进行评论,则调用的ajax php脚本可以更新数据库并回显我可以通过Firebug看到的一段文本。当然,对话框会保留在屏幕上。

删除注释后,数据库更新失败,而在Firebug中显示帖子数据时,响应选项卡丢失,并显示大小为0B。

我尝试移动$(this).dialog("close");中的function(data){ },但它会在屏幕上显示对话框。

我已经用问题的每一个组合搜索了Stackoverflow,但没有任何快乐,而且我已经乱七八小时了。

    buttons: {
                "Update": function() {$.post("ajax/udTManage.php", $("#buildtask").serialize(),function(data){alert("Here");});
                    $( this ).dialog( "close" );
                },
                "Cancel": function() {
                    $( this ).dialog( "close" );

                }
            },
            close: function() {
                $("#buildtask").remove();                       
                $('#tasker').submit();

            } 

2 个答案:

答案 0 :(得分:1)

您应该将$( this ).dialog( "close" );移到function(data){},以确保在完成发送请求之前不会解除表单。

尽管如此,由于AJAX调用触发了事件,因此使用$( this )引用请求而不是对话框。

因此,您应该通过它的id来调用窗口,并执行以下操作:$("#buildtask").dialog("close");

然后它会起作用。

答案 1 :(得分:0)

请注意,关闭函数中的代码将在您单击“更新”或“取消”时执行。如果单击“更新”,则删除#buildtask并在udTManage.php仍在执行时提交#tasker。

在不了解您的过程的情况下,很难确定它的失败位置,但有一种猜测是,udTManage.php中发生的任何事情都需要在#tasker提交之前完成。是这样的吗?如果是这样,以下应解决问题:

buttons: {
    "Update": function() {
        $.post(
            "ajax/udTManage.php",
            $("buildtask").serialize(),
            function(data) {
                // anything here is executed AFTER udTManage.php is executed
                $('#tasker').submit();
            }
        );
        $(this).dialog("close");
    },
    "Cancel": function() {
        $("tasker").submit(); // assuming you need to submit even when cancelling
        $(this).dialog("close");
    }
},
close: function() {
    // This is executed the moment you click either button (because both buttons immediately call the dialog close method)
    $("buildtask").remove(); // not sure why you might need this, though
}