jQuery中的AJAX表单提交

jQuery中的AJAX表单提交,jquery,ajax,form-submit,Jquery,Ajax,Form Submit,当我尝试使用$.postjquery ajax函数发送一些数据时,我遇到了一个问题—它不起作用。我的代码在这里: $.post( $(this).attr("action"), { task: "add", $(this).serialize() }, function(data) { if (data.length > 0 ) { alert("Success");

当我尝试使用$.postjquery ajax函数发送一些数据时,我遇到了一个问题—它不起作用。我的代码在这里:

$.post(
    $(this).attr("action"),
    {     
        task: "add",
        $(this).serialize()
    },
    function(data) {
        if (data.length > 0 ) {
            alert("Success");
        }
    }
);
我猜问题在于发送的数据,实际上我有一个完整的AJAX页面,其中有很多switch case语句要执行,因此每次发送和AJAX请求时我都需要指定任务变量


如果在如何解决这个问题上有更好的解决方案,请随意分享您的想法。谢谢。

我想应该是这样的

$.post(
    $(this).attr("action"),
    {task:"add",'data': $(this).serialize()},
    function(data){
        if(data.length > 0 ){
            alert("Success");
        }
    }
);

这部分的问题在于:

{     
    task: "add",
    $(this).serialize()
}
这将抛出一个语法错误,因为它不是有效的对象文本。调用$this.serialize返回一个字符串,该字符串是请求的查询字符串。你可以做的是:

$.post($(this).attr('action'), $(this).serialize() + '&task=add', function(data) {...});

问题可能在于

{task:"add",$(this).serialize()}
无效,因为逗号后需要标签

{task: "add", data: $(this).serialize()}
至少会产生一个有效的对象,但不是一个可以发布到服务器的对象

我认为最简单的解决办法是

$.post($(this).attr("action"),
$(this).serialize() + '&task=add',
function(data){
 if(data.length > 0 ){
   alert("Success");
}
});

$this指的是表格??是的,它指的是我提交的表格。你能更简要地介绍一下你的代码吗。。。。!!实际上,这是我第一次在发送表单时使用$this.serialize函数,但问题是此ajax请求的操作有很多切换情况,所以通常我使用名为task的变量并指定操作,但现在使用serialize时我不知道如何给出,在switch语句中要执行的操作。希望您得到了我想要说的内容。它可以工作,但我如何从php操作页面中的变量数据接收该值。如果你能分享一些关于Ankit的想法,你是如何用php接收任务的?数据也将被接收到。只需将语句中的“任务”替换为“数据”。i、 e$_请求['data']这可能不是您要找的。即使它可以工作,服务器也只会收到两个post参数,任务和数据,后者只是一个组合表单字段值对的长字符串。@PeterHerdenborg是对的。在这里寻找解决方案是的,Peter先生,你是对的,如果你在变量数据中发送它,那么所有的值都会变成很长的字符串。还有比这更有效的吗谢谢你安东尼先生。它起作用了,所以我们实际上是在尝试连接另一个字符串,然后发送它。非常感谢你。