【问题标题】:submitting form and variables together through jquery通过jquery一起提交表单和变量
【发布时间】:2011-11-12 08:19:44
【问题描述】:

我使用了两种提交方式。

有$.post

$.post('servers_side.php', { var1: var1, var2:var2},
function(result) 
{
some code...
});

将单独的变量发送到服务器端脚本。

还有一个提交整个表单的 AjaxSubmit 插件

$('#form').ajaxSubmit({success: function(result)
{
some code...
}
});

但是现在我有以下任务,假设我有一个表单和一些变量,我必须同时提交。

那么可以一起提交表单+一些变量吗?

【问题讨论】:

  • 我不太了解ajaxSubmit,但.serlialize() 不会帮你吗?

标签: javascript jquery ajax forms form-submit


【解决方案1】:

更新

您可以通过以下方式提交:

var Vars = {var1: var1, var2:var2};
var varsData = $.param(Vars);

// form data
var formData = $('#formID').serialize();

var data = varsData + '&' + formData;

$.ajax({
  type: 'POST',
  url: 'servers_side.php',
  data: data,
  success: function(res){ alert (res) }
})

您可以使用jQuery.param() 将数组或对象转换为对 url 友好的名称-值 paris。您可能还需要使用jQuery.serialize() 将表单数据转换为名称-值paris。您可以这样做:

var Vars = {var1: var1, var2:var2};
var varsData = $.param(Vars);

// form data
var formData = $('#formID').serialize();

var data = varsData + '&' + formData;

现在data 包含您可以在 ajax 请求中发送的自定义变量和表单元素的所有数据。

【讨论】:

  • 我遇到了问题。我现在如何提交?使用 $.post ?你可以写示例行吗?如何将这些数据放入 $.post ?
  • 我必须如何在服务器端解码它们?把它们当作数组还是什么?因为如果我发送数据,那么我必须在那里 $_POST(data) 对象,但是我怎样才能访问我的变量?在 php 中?
  • @David:请查看更新后的答案。要将它们放在服务器端,您需要使用 POST 数组,后跟 var 或表单元素的名称,例如 $_POST['name here']
  • $.post 不能只理解数据。它需要 data:something,否则 javascript 会停止。是我做错了什么还是 $.post 不能做我们想做的事?
  • 完成!你有“}”,必须删除
【解决方案2】:

嗯,这是可能的,但代码可能看起来很乱。作为最佳实践,您应该添加一些 hidden 字段

<form>
   .
   .
   .
   <input type="hidden" name="var1" id="var1" />
   <input type="hidden" name="var2" id="var2" />
   <input type="hidden" name="var3" id="var3" />
   .
   .
   .
</form>

并使用此 JavaScript 为这些 hidden 字段设置值

$("#var1").val("some data 1");
$("#var2").val("some data 2");
$("#var3").val("some data 3");

您可以继续使用现有的$.post() 代码

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-20
    • 1970-01-01
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多