虽然$。阿贾克斯()可以用来做AJAX的事情,我不认为它适合张贴大单的值。
你将如何post
一个大单(多领域),而无需手动输入所有呢?
虽然$。阿贾克斯()可以用来做AJAX的事情,我不认为它适合张贴大单的值。
你将如何post
一个大单(多领域),而无需手动输入所有呢?
什么是假设的背后你的理由? POST是专为使用GET传输数据的较大数额。 一个AJAX POST请求几乎是完全一样的“普通” POST请求,它只是捆绑在一个稍微不同的方式通过浏览器进行内部处理。 一对夫妇头可能会略有不同,但数据是完全一样的。 AJAX为什么不处理“大”的形式?
请问您甚至无论如何定义为“大”的形式?
编辑:谢谢你的澄清你的问题。 我知道你现在要问什么,我看到你来自哪里。 对于很多的投入形式,它可能是一个痛苦的将其捆绑成一个Ajax请求的所有时间。
由于您使用jQuery,有一个简单的解决了这一点。 退房的序列化()方法。 你给它一个形式,它给你回所有的表单输入元素和值,你可以直接传递给Ajax请求的查询字符串。 还有的手册页,显示它是如何做的还有一个例子。
所有你需要做的是这样的:
$.ajax({
data: $("form").serialize(),
//etc.
});
其中, "form"
是你的表单的id。
你可能想使用序列化 ,如果你不想手动为每个元素处理。
$.ajax({
type: "POST",
url: "form.php",
data: $("#form_id").serialize()
success: function(msg) {
alert("Form Submitted: " + msg);
}
});
您可以使用jQuery.post( url, data, callback, type)
,作为其简单jQuery.ajax( options )
。
通过使用serialize
,你可以自动发送整个表单。
$.post("/post_handler/",
$("form#my_form").serialize(),
function(json){
/*your success code*/
}, "json");
一个更完整的例子:
<script>
$().ready(function(){
$("form#my_form submit").click(function(){
$.post("/post_handler/",
$("form#my_form").serialize(),
function(json){
/*your success code*/
}, "json");
return false;
});
}
</script>
<form id="my_form" action="/post_handler/" method="post">
<input type="text" name="text1" value="my text 1" />
<input type="text" name="text2" value="my text 2" />
<input type="submit" name="submit_button" value="Send" />
</form>
这将覆盖默认的post
,并与AJAX执行它。
如果你还没有尝试过呢。 然后创建一个大单(现在你的意思等等),并使用$.ajax()
或窗体的jQuery插件张贴。 你就会知道,如果它是这样的事情还是不行!
编辑: - (你的编辑后),然后形成插件是为你! 试一试。
尝试的jQuery插件的形式 。
它可能不正是你需要做的开箱即用的东西。
我已经派相当复杂的(大)的形式与$阿贾克斯(),也没有问题。 我还没有发送的文件在Ajax请求,但我已经看到它完成,因为它不占用浏览器当你上传它工作得更好,然后传统的职位。
基于您的评论对@zombat,我想这是你有一个非常大量的投入,其中大部分将是空的大部分时间。 这里1两点建议)分裂投入独立的形式,只有尽快互送,因为它被触摸/完成。 2)检查与JavaScript的表单的状态,并包裹信息到JSON或XML,而是发布表单数据,只是后的数据结构。
“大”不应该是一个问题,你或许可以找到一个更好的形容词来描述你的数据,这将让大家知道为什么它是很难发。
什么你问是不是很难。 所有你所要做的就是收集表格的内容和(通常是使用JSON)它传递到您的服务器。
看看这个HOWTO:
http://code.tutsplus.com/tutorials/submit-a-form-without-page-refresh-using-jquery--net-59