ajax 提交表单数据 各位大侠帮忙,在线等。。

yaoxuemin 2010-07-08 04:29:55
我想要实现的 用ajax 提交表单数据 ,如下:
$.ajax({
type: "POST", //提交方式
url: "manage/administrator/get_systemval", // 提交路径
data: "name=John&location=Boston",
// 参数 问题出现在这里,因为我的表单元素的每个值都要传到控制器中去处理,我不想 将表单的值 一个个的取出来 传过去, 我想要实现类似于 我们点击 submit 按钮 在表单中 用action 提交路径 表单元素命名 我用的格式 统一为: form['xxx'] 然后在后台接的时候 我用一句$this-> input -> post('form'); 就可以将表单的值 全部接过来! 现在想使用 ajax方式 去实现!

success: function(msg){
alert( "Data Saved: " + msg );
}
});

请各位大侠帮忙!!
...全文
231 点赞 收藏 21
写回复
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
helloyou0 2010-07-08
jquery核心部分就有serialize(),

http://api.jquery.com/serialize/
回复
床上等您 2010-07-08
不错的 formSerialize 。。。。jq
回复
jungle_java 2010-07-08
强烈支持该贴,其实自己的项目中获取页面上信息的方式就是楼主所问的,可惜我每天只知道$this->data['xxx'],即页面上的信息都保存到data数组中去的。明天一定要看明白到底是怎么实现的!也希望这里的高手们能解决这个问题!呵呵,关注ing!
回复
liangpei2008 2010-07-08
嗯,prototype\jquery都可以用formSerialize来序列化表单项,而后用ajax提交!
当然,也可以自定义一个函数来循环表单项
回复
amani11 2010-07-08

//jquery果然效率高,,,,,我前面贴的有点问题,再献丑一次吧,个人测试通过
function encodeFormData(formElement) { //formElement == $('#XXX');
var whereClause = "";
var and = "";
for ( i = 0 ; i < formElement.length ; i++ ) {
var element = formElement[i];
alert(i);
if ( element.name != "" ) {
if (element.type=='select-one') {
element_value = element.options[element.selectedIndex].value;
} else if ( element.type == 'checkbox' || element.type == 'radio' ) {
if ( element.checked == false ) {
continue;
}
element_value = element.value;
} else {
element_value = element.value;
}
whereClause += and + 'form[' + element.name + ']=' + element_value.replace(/\&/g,"%26");
and = "&"
}
}
return whereClause;
}
回复
foolbirdflyfirst 2010-07-08
我用extjs,
new Ext.Ajax.request({
form : 'form id值'
,upload : true
})

就可以构造个POST带文件上传的ajax请求,相信jquery也有相应办法。用了框架还自己写感觉有点傻,虽然原理都差不多。
回复
foolbirdflyfirst 2010-07-08
类似这样
<form name="frm" id="frm">
<input type="text" name='key1' value="val1"/>
<input type="text" name='key2' value="val2"/>
<input type="text" name='key3' value="val3"/>
<input type="text" name='key4' value="val4"/>

</form>
<script>
var of = document.getElementById('frm')
,ip = of.elements
,postdata = []
for(var i=0,j=ip.length;i<j;i++){
postdata[postdata.length] = ip[i].name + '=' + ip[i].value;
}
alert(postdata.join('&'));
</script>
回复
xuzuning 2010-07-08
jquery ???

<script type="text/javascript" src="http://malsup.com/jquery/form/jquery.form.js"></script>

<script type="text/javascript">
$(document).ready(function(){
var url = 'ajax_server.php';

//ajax的post提交
$.post(url,
{ data: $("#form1").formSerialize()},
function(data){
alert(data); //debug:data即为处理结果
});

});
</script>
回复
amani11 2010-07-08


//自己拼装了,就是数组接收值吧???不过jquery.form.js也不错

function encodeFormData(formElement) { //formElement == $('#XXX');
var whereClause = "";
var and = "";
for ( i = 0 ; i < formElement.length ; i++ ) {
var element = formElement[i];
if ( element.name != "" ) {
if (element.type=='select-one') {
element_value = element.options[element.selectedIndex].value;
} else if ( element.type == 'checkbox' || element.type == 'radio' ) {
if ( element.checked == false ) {
break;
}
element_value = trim(element.value);
} else {
element_value = trim(element.value);
}
whereClause += and + 'form[' + trim(element.name) + ']=' + element_value.replace(/\&/g,"%26");
and = "&"
}
}
return whereClause;
}




回复
yaoxuemin 2010-07-08
[Quote=引用 10 楼 foolbirdflyfirst 的回复:]

用form控件只不过是方便了操作,协议还是http协议,ajax发送的data属性应该就是http request body.
你完全可以写个js函数把form控件的name,value串起来作为发送参数发送过去啊。
[/Quote]

不是很明白!能麻烦你举个例子说明吗? 谢谢了!
回复
woshiguozhongbin 2010-07-08
如果你不用插件...一个页面十几个文本框都经的你去写data了...
回复
foolbirdflyfirst 2010-07-08
用form控件只不过是方便了操作,协议还是http协议,ajax发送的data属性应该就是http request body.
你完全可以写个js函数把form控件的name,value串起来作为发送参数发送过去啊。
回复
yaoxuemin 2010-07-08
[Quote=引用 6 楼 icemoist 的回复:]

引用 4 楼 woshiguozhongbin 的回复:
用form插件...

有必要吗,小题大做
[/Quote]

呵呵! 那你认为我这个小题要怎么解决呢! 其实现在我都已经用 纯表单提交实现了! 但是在处理 控制器中的返回值时 有一些问题! 不好处理,所以想要寻找另外的方法
回复
woshiguozhongbin 2010-07-08
http://www.wwoon.com/?aid=80

你可以看看...
回复
yaoxuemin 2010-07-08
[Quote=引用 4 楼 woshiguozhongbin 的回复:]

用form插件...
[/Quote]

能具体点吗? 没用过! 请指教!
回复
icemoist 2010-07-08
[Quote=引用 4 楼 woshiguozhongbin 的回复:]
用form插件...
[/Quote]
有必要吗,小题大做
回复
yaoxuemin 2010-07-08
[Quote=引用 3 楼 natici 的回复:]

据我理解,不行的
[/Quote]
那有没有好一些的方法,因为我表单的数据很多,如果一个一个取值的话 ,会很麻烦!
回复
woshiguozhongbin 2010-07-08
用form插件...
回复
natici 2010-07-08
据我理解,不行的
回复
yaoxuemin 2010-07-08
[Quote=引用 1 楼 kingkwj 的回复:]

JQuery
按LZ的意思是data后面的值应该就是数组了.

还没有遇到过,不知道能不能实现.
[/Quote]

是 就是那个意思! 就是表单的值,放在数组中! 一次性提交过去!并一次性取值!
回复
发动态
发帖子
基础编程
创建于2007-09-28

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
申请成为版主
社区公告
暂无公告