`

原创:利用jquery将表单数据转换成json字符串以便提交

阅读更多

看了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());"/>&nbsp;<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>

 

产生的效果如下图所示:

formtojson

 

  • 大小: 59.1 KB
  • 大小: 73.1 KB
分享到:
评论

相关推荐

    使用JQuery实现从JSON对象转换为form提交数据

    在前端开发中,有时我们需要将JSON格式的数据转换成表单(form)的格式进行提交,以便于服务器端处理。在JavaScript的世界里,jQuery库提供了一种便捷的方式来进行这样的转换。本篇文章将深入探讨如何利用jQuery从...

    html对应的文件中 将form 表单数据 转化为json 格式

    例如,如果用户输入了"张三"作为用户名和"zhangsan@example.com"作为邮箱,控制台将打印出如下JSON字符串: ```json { "username": "张三", "email": "zhangsan@example.com" } ``` 接下来,我们可以使用jQuery...

    jquery_json.rar_JSON_jquery_jquery-json_jquery.json_jquery.json.

    收到JSON响应后,使用`$.parseJSON`将JSON字符串解析成JavaScript对象,然后可以方便地操作这些数据来更新DOM元素。反之,如果需要将用户在网页上的操作结果(如表单数据)发送回服务器,可以先使用`$.toJSON`将数据...

    jQuery扩展将复杂form表单转成json对象

    在标题和描述提到的场景中,我们需要创建一个jQuery扩展,将复杂的form表单数据转换为JSON对象。这通常涉及到遍历表单元素,获取它们的值,并构建JSON对象。以下是一个简单的示例: ```javascript (function($) { ...

    json数据jquery异步示例

    5. **JSON.stringify()**: 这是JavaScript内置的方法,用于将JavaScript值转换为JSON字符串,以便通过Ajax发送。 6. **后台解析JSON**: 服务器端(可能是PHP, Node.js, Java等)接收到JSON数据后,需要解析成相应的...

    JSON jquery 与php 入门

    在PHP中,我们可以使用json_encode()函数将PHP数组或对象转换为JSON字符串。例如: ```php $data = array( 'name' =&gt; 'John', 'age' =&gt; 30, 'city' =&gt; 'New York' ); $json = json_encode($data); echo $...

    jQuery json

    4. **序列化表单数据为JSON**:jQuery提供`serializeArray()`和`serializeObject()`(非官方插件)方法将表单数据转换为JSON格式,便于发送Ajax请求: ```javascript var formData = $('form').serializeArray();...

    php基于jquery的ajax技术传递json数据简单实例.docx

    eval() 函数是一个 JavaScript 函数,用于将字符串解析成 JavaScript 代码。在本例中,我们使用 eval() 函数将 JSON 数据解析成 JavaScript 对象。 PHP 相关知识点 在本文中,我们还提到了许多 PHP 相关知识点,...

    整合jquery+json+struts2异步提交实例

    通过将JavaScript对象转换为JSON字符串,可以方便地发送到服务器,然后服务器端再将其解析回对象进行处理。 **Struts2** 是一个基于MVC(Model-View-Controller)设计模式的Java Web应用框架。它提供了强大的Action...

    php jquery json无刷新提交查询实例

    data: JSON.stringify({query: query}), // 将查询参数转换为JSON字符串 contentType: 'application/json', dataType: 'json', success: function(response) { handleResponse(response); // 处理返回的JSON...

    struts2+json+jquery实现ajax数据的存取

    在此过程中,Action可以利用JSON插件将Java对象转换为JSON字符串。 - **返回JSON数据**:完成业务处理后,Struts2通过JSON插件将结果集封装成JSON响应,并设置相应HTTP头信息,如Content-Type为'application/json'。...

    jquery-json

    在这个例子中,我们首先获取表单字段的值,然后将它们构造成一个JavaScript对象,再转换为JSON字符串,最后以JSON格式发送到服务器。 ### myEclipse7.0中的应用 myEclipse是一款强大的Java集成开发环境,它也支持...

    form表单数据封装成json格式并提交给服务器的实现方法

    然后利用`jQuery`或者原生JavaScript的`querySelectorAll`等方法遍历表单元素,将每个字段的值与对应的键组合成键值对,最后用`JSON.stringify()`函数将对象转换成JSON字符串。 以下是一个简单的JavaScript示例: ...

    jQuery+JSON

    3. **jQuery的$.parseJSON()**:如果你有一个JSON格式的字符串,可以使用`$.parseJSON()`将其转换为JavaScript对象。然而,这个方法在jQuery 3.0之后已被弃用,推荐使用原生的`JSON.parse()`方法。 4. **JSONP**:...

    使用jQuery ajax提交表单代码

    - 使用`$(selector).serialize()`方法,可以获取表单元素的值并将其转换为URL编码的字符串,适用于POST请求。 - 对于复杂数据结构,可以使用`$(selector).serializeArray()`,然后手动构建数据对象。 3. **发起...

    json数据序列化和反序列化

    2. 数据序列化:序列化是将对象转换为可传输或存储的格式,对于JSON,这意味着将JavaScript对象转换为JSON字符串。在JavaScript中,我们可以使用`JSON.stringify()`方法实现这一过程。例如: ```javascript let obj ...

    JQuery与Json的结合使用

    这样,开发者可以通过`dataType: 'json'`设置,让jQuery自动将JSON字符串解析为JavaScript对象,简化了数据处理步骤。 2. **动态加载内容**:通过获取JSON数据,可以动态地更新网页内容。例如,可以加载一个列表,...

    将JavaScript的jQuery库中表单转化为JSON对象的方法

    大家知道Jquery中有serialize方法,可以将表单序列化为一个“&”连接的字符串,但却没有提供序列化为Json的方法。不过,我们可以写一个插件实现。   我在网上看到有人用替换的方法,先用serialize序列化后,将&替换...

    jQuery向webApi提交post json数据

    而在前端使用jQuery发起AJAX请求时,需要正确设置ContentType为'application/json',并使用JSON.stringify()方法将JavaScript对象转换为JSON字符串。 根据提供的文件内容,我们可以提炼出以下知识点: 1. jQuery的...

Global site tag (gtag.js) - Google Analytics