2013-01-31 42 views
0

我试图用$.post(jquery ajax function)发送一些数据时出现问题 - 它不起作用。我的代码是在这里:在jQuery中提交AJAX表单

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

我猜问题是发送的数据,其实我有很多开关case语句的一个完整的AJAX页面用于执行,所以我需要指定task变量每我发送的时间和AJAX请求。

如果有更好的解决方案可以解决这个问题,请随时分享您的想法。谢谢。

+0

$(本),指的是形式? – Ankit

+0

是的,它是指我提交 – Chakra

+0

你可以简要介绍你的代码.... !! –

回答

1

它应该像下面我想的那样。

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

它的工作原理,但我将如何从PHP动作页面中的变量“数据”接收该值。如果你能分享一下Ankit的一些想法。 – Chakra

+0

你如何在PHP中接收任务?数据也会被接收到。只需在您的声明中将“任务”替换为“数据”即可。即$ _REQUEST ['data'] – Ankit

+0

这可能不是你正在寻找的。即使它可以工作,服务器也只会收到两个post参数,“task”和“data”,后者只是一个长字符串的组合形式字段 - 值对。 –

1

的问题是这一部分:

{  
    task: "add", 
    $(this).serialize() 
} 

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

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

哦,谢谢你安东尼先生。它在这里工作,我们实际上试图连接另一个字符串,然后发送它。非常感谢你。 – Chakra

0

这个问题可能是,作为一个标签逗号后所需的部分

{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"); 
} 
}); 
+0

它这样工作。非常感谢您的意见。 :d – Chakra