2011-05-08 82 views
7

我想提交一个使用jquery/ajax约10输入的表单,但我不知道如何通过数据参数传递数据给它ajax.should我序列化他们?通过jquery/ajax传递数据在表单提交

+0

你将数据传递给什么? ASP.NET,PHP?您传递数据的服务器是期望JSON数据还是只是一串键值对? – Dve 2011-05-08 19:37:21

+0

我认为通过提交表单,它的所有字段都会自动发送。 – 2011-05-08 19:39:41

+0

@DVE:我使用PHP。 – 2011-05-08 19:41:26

回答

14

jQuery.serialize可以对你有所帮助。对于要提交的表单的所有字段,使用name属性非常重要。相应的代码可以大约如下:

$("form#myFormId").submit(function() { 
    var mydata = $("form#myFormId").serialize(); 
    console.log(mydata); // it's only for test 
    $.ajax({ 
     type: "POST", 
     url: "myUrlToPostData.php", 
     data: mydata, 
     success: function(response, textStatus, xhr) { 
      console.log("success"); 
     }, 
     error: function(xhr, textStatus, errorThrown) { 
      console.log("error"); 
     } 
    }); 
    return false; 
}); 
+0

html输出在哪里? – 2015-05-06 04:05:41

+0

@phpPluginMaster:我不确定你的意思。 'submit'事件处理程序返回'false',所以没有提交重定向。一个只发送表单的数据到服务器。 'success'回调的'response'参数可以有选择地从服务器返回数据('url:“myUrlToPostData.php”')。 – Oleg 2015-05-06 04:51:59

+0

如果你使用ajax,你通常会想成功输出一些东西。除了console.log,我没有看到成功的输出 – 2015-05-06 23:16:48

3
$.ajax({ 
type: "POST", 
url: "handle.php", 
data: "n="+name+"&e="+email, 
success: function() { 
alert('It worked'); 
} 
}); 

以下是使用它的最简单方法。这只会将两个post变量$ _POST ['n']和$ _POST ['e']发送到handle.php。您的形式是这样的,如果你的AJAX是一个函数调用send():

<form id="form" onsubmit="send(this.name.value, this.email.value); return false;"> 
+0

谢谢,但我有10个输入字段发布到服务器,我想分开他们,使数据字符串将创建一个long string.i使用PHP。 – 2011-05-08 19:45:35

+0

对于IE,至少在POST数据通过标题时没有限制。既然你将引用这些字符串作为变量,你甚至不会注意到字符串的长度,除非它受到服务器或PHP/JavaScript的限制。 “但是,POST方法不受提交名称/值对的URL大小的限制,这些对在页眉中而不是在URL中传输。”来自:http://support.microsoft.com/default.aspx?scid=kb;EN-US;q208427 – 2011-05-08 21:51:16

+1

serialize()是更好的选择。这只适用于您只想发布特定数据的情况。 – 2013-04-25 17:13:57