AJax技术

thinkphp ajax 异步 局部 刷新(2)

字号+ 作者:H5之家 来源:H5之家 2017-09-11 18:00 我要评论( )

var jsonStr = '[{"id":"01","open":false,"pId":"0","name":"A部门"},{"id":"01","open":false,"pId":"0","name":"A部门"},{"id":"011","open":false,"pId":"01","name":"A部门"},{"id":"03","open":false,"pId":"

        var jsonStr = '[{"id":"01","open":false,"pId":"0","name":"A部门"},{"id":"01","open":false,"pId":"0","name":"A部门"},{"id":"011","open":false,"pId":"01","name":"A部门"},{"id":"03","open":false,"pId":"0","name":"A部门"},{"id":"04","open":false,"pId":"0","name":"A部门"}, {"id":"05","open":false,"pId":"0","name":"A部门"}, {"id":"06","open":false,"pId":"0","name":"A部门"}]';

      //  var jsonObj = $.parseJSON(jsonStr);

      var jsonObj =  JSON.parse(jsonStr)

        console.log(jsonObj)

     var jsonStr1 = JSON.stringify(jsonObj)

     console.log(jsonStr1+"jsonStr1")

     var jsonArr = [];

     for(var i =0 ;i < jsonObj.length;i++){

            jsonArr[i] = jsonObj[i];

     }

     console.log(typeof(jsonArr))

    </script>

想要将表单数据提交到后台,需要先从表单获取数据/数据集:

serialize和serializeArray的区别是serialize()获取到序列化的表单值字符串,serializeArray()以数组形式输出序列化表单值。举例:

var serialize_string=$('#form').serialize();

得到:a=1&b=2&c=3&d=4&e=5

var serialize_string_array=$('#form').serializeArray();

得到:

[

  {name: 'firstname', value: 'Hello'},

  {name: 'lastname', value: 'World'},

  {name: 'alias'}, // 值为空

]

相对来说,serializeArray()和最终想要得到的json数组更加相似。只不过需要将包含多个name-value形式json对象的json数组改写成'first_name':'Hello'形式的json对象。

下面有两种转换方法:

这里使用第二种方法举例,可以起名为change_serialize_to_json():

var data = {};

$("form").serializeArray().map(function(x){

if (data[x.name] !== undefined) {

        if (!data[x.name].push) {

            data[x.name] = [data[x.name]];

        }

        data[x.name].push(x.value || '');

    } else {

        data[x.name] = x.value || '';

    }

});

输出:{"input1":"","textarea":"234","select":"1"}

完整流程:

var serialize=$('#form').serialize()结果(得到一个字符串,用serializeArray()更好,其中中文都会转换成utf8):

serial_number=SN2&result=%E9%9D%9E%E6%B3%95

var serialize_array=$('#form').serializeArray()结果(结果是json对象数组):

Array [ Object, Object ]

var data=change_serialize_to_json(serialize_array)的结果是(以第二种转换方法为例,结果是json对象):

Object {serial_number: "SN2", result: "非法" }

var json_data=JSON.stringify(data)(结果是json字符串):

{"serial_number":"SN2","result":"非法"}

在js端将表单数据转化为json形式的其他函数:

将json字符串转换为json对象:

eval("(" + status_process+ ")");

json字符串转化成json对象:

// jquery的方法

var jsonObj = $.parseJSON(jsonStr)

//js 的方法

var jsonObj =  JSON.parse(jsonStr)

json对象转化成json字符串:

//js方法

var jsonStr1 = JSON.stringify(jsonObj)

JSON.parse()用于从一个字符串中解析出json对象。JSON.stringify()相反,用于从一个对象解析出字符串。

(链接:)

str_replace() 函数用于替换掉字符串中的特定字符,比如替换掉数据转换后多余的空格、'/nbsp'等

注意:serialize和serializeArray()函数在处理checkbox时存在无法获取未勾选项的bug,需要自己编写函数改写原函数,举例:

(链接:)

//value赋值为off是因为正常的serializeArray()获取到的勾选的checkbox值为on。

$.fn.mySerializeArray = function () {

    var a = this.serializeArray();

    var $radio = $('input[type=radio],input[type=checkbox]', this);

    var temp = {};

    $.each($radio, function () {

        if (!temp.hasOwnProperty(this.name))

        {

            if ($("input[name='" + this.name + "']:checked").length == 0)

            {

                temp[this.name] = "";

                a.push({name: this.name, value: "off"});

            }

        }

    });

    return a;

};

三、使用js操作DOM实现局部刷新:

实现局部刷新的途径:

1、假设页面有查询form和结果table。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  •  Ajax学习札记01-简单实现数据异步交互

    Ajax学习札记01-简单实现数据异步交互

    2017-09-02 15:00

  • 标签:[ ajax ] 列表

    标签:[ ajax ] 列表

    2017-08-30 09:03

  • [APICloud | APP开发技巧]api.ajax请求耗时测试用例

    [APICloud | APP开发技巧]api.ajax请求耗时测试用例

    2017-08-19 18:01

  • 第46课:ASP.NET MVC异步AJAX请求部分视图(PartialViewResult)

    第46课:ASP.NET MVC异步AJAX请求部分视图(PartialViewResult)

    2017-08-15 14:02

网友点评