【问题标题】:AJAX form submission in jQueryjQuery 中的 AJAX 表单提交
【发布时间】:2013-01-31 13:14:44
【问题描述】:

当我尝试使用$.post(jquery ajax function) 发送一些数据时遇到问题 - 它无法正常工作。我的代码在这里:

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

我猜问题出在发送的数据上,实际上我有一个完整的 AJAX 页面,其中包含许多要执行的 switch case 语句,因此我需要在每次发送 AJAX 请求时指定 task 变量。

如果关于如何解决此问题有更好的解决方案,请随时分享您的想法。谢谢。

【问题讨论】:

  • $(this) 指的是表格??
  • 是的,它指的是我提交的表单
  • 你能简单介绍一下你的代码吗……!!
  • 实际上这是我第一次在发送表单时使用该函数 $(this).serialize() 函数,但问题是此 ajax 请求的操作有很多 switch 案例,所以通常我以前使用名为“task”的变量并指定操作,但是现在当我使用 serialize() 时,我不知道如何给出在 switch 语句中执行哪个操作。希望你得到我想要的说。

标签: jquery ajax form-submit


【解决方案1】:

我想应该像下面这样。

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

【讨论】:

  • 它有效,但我将如何从 php 操作页面中的变量“数据”接收该值。如果你能分享一些关于 Ankit 的想法。
  • 如何在 php 中接收任务?也将收到相同的数据。只需在您的声明中将“任务”替换为“数据”即可。即 $_REQUEST['data']
  • 这可能不是您想要的。即使它可以工作,服务器也只会接收两个 post 参数,“task”和“data”,后者只是一长串组合的表单字段值对。
  • @PeterHerdenborg 是对的。在这里寻找解决方案stackoverflow.com/questions/6164691/…
  • 是的,彼得先生,您是对的,如果您以可变数据的形式发送它,那么所有的值都会变成很长的字符串。有什么比这更有效的吗?
【解决方案2】:

问题出在这部分:

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

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

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

【讨论】:

  • 哦,谢谢安东尼先生。它起作用了,所以在这里我们实际上是在尝试连接另一个字符串然后发送它。非常感谢你。
【解决方案3】:

问题可能是那个部分

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

【讨论】:

    猜你喜欢
    • 2021-09-30
    • 2011-04-23
    • 2012-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多