看了jquery的表单对象,产生了自己写一个表单数据生成json字符串的函数的想法,试了一下,代码如下,抛砖引玉吧!
html代码:
<div style="width:400px;background-color:#CCCCCC;padding:10px">
<form id="myform">
<p>
姓名:<input type="text" value="wangsir" id="uname" name="uname"/>
</p>
<p>
怩称:<input type="text" value="风一样的男子" id="nikename" name="nikename"/>
</p>
<p>
性别:<select name="sex" id="sex"><option selected value=1>男</option><option value=0>女</option></select>
</p>
<p>
婚姻状态:<input type="radio" name="married" value="yes"/>已婚<input type="radio" name="married" value="no">未婚
</p>
<p>
个人爱好:
<input type="checkbox" name="fav" value="足球">足球
<input type="checkbox" name="fav" value="台球" >台球
<input type="checkbox" name="fav" value="羽毛球">羽毛球
</p>
<p>
择偶标准:
<input type="checkbox" name="standard" value="高">高
<input type="checkbox" name="standard" value="帅">帅
<input type="checkbox" name="standard" value="富">富
</p>
<p>
目标城市:<select name="city" id="city"><option selected value="wh">武汉</option><option value="other">外省</option></select>
</p>
<p>
头像:<input type="text" readonly value="./images/head.jpg" id="headpic" name="headpic"><img src="./images/head.jpg" width=64px height=64px id="headpic" />
</p>
<p>
受教育经历:
<textarea rows="10" cols="50" id="eduhistory" name="eduhistory" value="" width="200px" height="180px"></textarea>
</p>
<p>
<input type="button" value="提交" onclick="javascript:alert($('#myform').formtojson());"/> <input type=reset value="取消" />
</p>
</form>
</div>
javascript代码:
$.fn.formtojson = function(){
var formid="#"+$(this).attr("id");
var json="";
var radios="";
var checks="";
var texts="";
var combos="";
var textareas="";
var selector=formid+" input"; //找到表单中所有的input标签
var comboselector=formid+" select"; //找到表单中所有select combo对象
var textareaselector=formid+" textarea"; //找到表单的大文本输入框
//处理大文本框
for(i=0;i<$(textareaselector).length;i++){
var textareaelement=textareaselector+":eq("+i+")";
var textareaname=$(textareaelement).attr("name");
if(textareas.indexOf(textareaname)==-1){
textareas=(textareas.length==0?"":textareas+",")+textareaname+":'"+
$("textarea[name='"+textareaname+"']").val()+"'";
}
}
//处理下拉列表框
for(i=0;i<$(comboselector).length;i++){
var comboelement=comboselector+":eq("+i+")";
var comboname=$(comboelement).attr("name");
if(combos.indexOf(comboname)==-1){
combos=(combos.length==0?"":combos+",")+comboname+":'"+
$("select[name='"+comboname+"']").val()+"'";
}
}
//处理input对象
for(i=0;i<$(selector).length;i++)
{
var element=selector+":eq("+i+")";
var etype=$(element).attr("type");
//处理文本框
if(etype=="text"||etype=="password"){
var tkname=$(element).attr("name");
if(texts.indexOf(tkname)==-1){
texts=(texts.length==0?"":texts+",")+tkname+":'"+$("input[name='"+tkname+"']").val()+"'";
}
}
//处理单选框
if(etype=="radio"){
var rkname=$(element).attr("name");
if(radios.indexOf(rkname)==-1){
var checkedcount=$("input[name='"+rkname+"']:checked").length;
radios=(radios.length==0?"":radios+",")+rkname+":'"+
(checkedcount==0?"":$("input[name='"+rkname+"']:checked").val())+"'";
}
}
//处理多选框
if(etype=="checkbox"){
var ckname=$(element).attr("name");
//alert(ckname);
//1\检查checks是否已经此checkbox
if(checks.indexOf(ckname+":")==-1){ //以前没有找到过
//2\没有,则将其值存入checks
var tempchecks="";
if($("input[name='"+ckname+"']:checked").length>0){
for(j=0;j<$("input[name='"+ckname+"']:checked").length;j++){
tempchecks=(tempchecks.length==0?"":tempchecks+"|")+$("input[name='"+ckname+"']:checked:eq("+j+")").val();
}
//alert(tempchecks);
}
checks=(checks.length==0?"":checks+",")+ckname+":'"+tempchecks+"'";
//alert(checks);
}
}
}
json=(json.length==0?"":json+",") +(texts.length==0?"":texts+",")+
(combos.length==0?"":combos+",")+(radios.length==0?"":radios+",")+
(textareas.length==0?"":textareas+",")+(checks.length==0?"":checks+",");
return json;
}<script>
产生的效果如下图所示:
- 大小: 59.1 KB
- 大小: 73.1 KB
分享到:
相关推荐
在前端开发中,有时我们需要将JSON格式的数据转换成表单(form)的格式进行提交,以便于服务器端处理。在JavaScript的世界里,jQuery库提供了一种便捷的方式来进行这样的转换。本篇文章将深入探讨如何利用jQuery从...
例如,如果用户输入了"张三"作为用户名和"zhangsan@example.com"作为邮箱,控制台将打印出如下JSON字符串: ```json { "username": "张三", "email": "zhangsan@example.com" } ``` 接下来,我们可以使用jQuery...
收到JSON响应后,使用`$.parseJSON`将JSON字符串解析成JavaScript对象,然后可以方便地操作这些数据来更新DOM元素。反之,如果需要将用户在网页上的操作结果(如表单数据)发送回服务器,可以先使用`$.toJSON`将数据...
在标题和描述提到的场景中,我们需要创建一个jQuery扩展,将复杂的form表单数据转换为JSON对象。这通常涉及到遍历表单元素,获取它们的值,并构建JSON对象。以下是一个简单的示例: ```javascript (function($) { ...
5. **JSON.stringify()**: 这是JavaScript内置的方法,用于将JavaScript值转换为JSON字符串,以便通过Ajax发送。 6. **后台解析JSON**: 服务器端(可能是PHP, Node.js, Java等)接收到JSON数据后,需要解析成相应的...
在PHP中,我们可以使用json_encode()函数将PHP数组或对象转换为JSON字符串。例如: ```php $data = array( 'name' => 'John', 'age' => 30, 'city' => 'New York' ); $json = json_encode($data); echo $...
4. **序列化表单数据为JSON**:jQuery提供`serializeArray()`和`serializeObject()`(非官方插件)方法将表单数据转换为JSON格式,便于发送Ajax请求: ```javascript var formData = $('form').serializeArray();...
eval() 函数是一个 JavaScript 函数,用于将字符串解析成 JavaScript 代码。在本例中,我们使用 eval() 函数将 JSON 数据解析成 JavaScript 对象。 PHP 相关知识点 在本文中,我们还提到了许多 PHP 相关知识点,...
通过将JavaScript对象转换为JSON字符串,可以方便地发送到服务器,然后服务器端再将其解析回对象进行处理。 **Struts2** 是一个基于MVC(Model-View-Controller)设计模式的Java Web应用框架。它提供了强大的Action...
data: JSON.stringify({query: query}), // 将查询参数转换为JSON字符串 contentType: 'application/json', dataType: 'json', success: function(response) { handleResponse(response); // 处理返回的JSON...
在此过程中,Action可以利用JSON插件将Java对象转换为JSON字符串。 - **返回JSON数据**:完成业务处理后,Struts2通过JSON插件将结果集封装成JSON响应,并设置相应HTTP头信息,如Content-Type为'application/json'。...
在这个例子中,我们首先获取表单字段的值,然后将它们构造成一个JavaScript对象,再转换为JSON字符串,最后以JSON格式发送到服务器。 ### myEclipse7.0中的应用 myEclipse是一款强大的Java集成开发环境,它也支持...
然后利用`jQuery`或者原生JavaScript的`querySelectorAll`等方法遍历表单元素,将每个字段的值与对应的键组合成键值对,最后用`JSON.stringify()`函数将对象转换成JSON字符串。 以下是一个简单的JavaScript示例: ...
3. **jQuery的$.parseJSON()**:如果你有一个JSON格式的字符串,可以使用`$.parseJSON()`将其转换为JavaScript对象。然而,这个方法在jQuery 3.0之后已被弃用,推荐使用原生的`JSON.parse()`方法。 4. **JSONP**:...
- 使用`$(selector).serialize()`方法,可以获取表单元素的值并将其转换为URL编码的字符串,适用于POST请求。 - 对于复杂数据结构,可以使用`$(selector).serializeArray()`,然后手动构建数据对象。 3. **发起...
2. 数据序列化:序列化是将对象转换为可传输或存储的格式,对于JSON,这意味着将JavaScript对象转换为JSON字符串。在JavaScript中,我们可以使用`JSON.stringify()`方法实现这一过程。例如: ```javascript let obj ...
这样,开发者可以通过`dataType: 'json'`设置,让jQuery自动将JSON字符串解析为JavaScript对象,简化了数据处理步骤。 2. **动态加载内容**:通过获取JSON数据,可以动态地更新网页内容。例如,可以加载一个列表,...
大家知道Jquery中有serialize方法,可以将表单序列化为一个“&”连接的字符串,但却没有提供序列化为Json的方法。不过,我们可以写一个插件实现。 我在网上看到有人用替换的方法,先用serialize序列化后,将&替换...
而在前端使用jQuery发起AJAX请求时,需要正确设置ContentType为'application/json',并使用JSON.stringify()方法将JavaScript对象转换为JSON字符串。 根据提供的文件内容,我们可以提炼出以下知识点: 1. jQuery的...