zoukankan      html  css  js  c++  java
  • #每日总结#3

    [问题总结]

    1.今天在写毕设项目的时候,后台传一个数据到html页面隐藏域,但是前端通过隐藏域取值时,取到的是一个字符串而不是一个对象。于是查了一下解析JSON字符串为JSON数据格式的问题。得到了以下方法:

    (1)$.parseJSON()

      $.parseJSON():将格式完好的JSON字符串转为与之对应的JavaScript对象。

            例如:

    var obj = $.parseJSON('{"name":"John"}');
    alert( obj.name === "John" );     

    格式完好的意思是要严格遵守JSON格式,传入格式有误的 JSON 字符串可能导致抛出异常。例如,下面这些无效的 JSON 字符串:

    • {test: 1} (test 没有使用双引号包裹).
    • {'test': 1} ('test' 用了单引号而不是双引号包裹).
    • "{test: 1}" (test 没有使用双引号包裹).
    • "{'test': 1}" ('test' 用了单引号而不是双引号包裹).
    • "'test'" ('test' 用单引号代替双引号).
    • ".1" (number 必须以数字开头; "0.1" 将是有效的).
    • "undefined" (undefined 不能表示一个 JSON 字符串; 然而null,可以).
    • "NaN" (NaN 不能表示一个 JSON 字符串; 用Infinity直接表示无限也是不允许的).

    JSON标准不允许“控制字符”如制表符或换行符。比如$.parseJSON('{"testing":"1 2 3"}'),大多数实现中将抛出一个错误,因为JavaScript分析器直接转换字符串的制表符和换行符为文本的制表符和换行符;产生双反斜杠,例如"1\t2\n3"是预期的结果。

    (2)$.eval():用于计算并执行以字符串表示的JavaScript代码。(由于eval()函数能执行任意代码因此会带来安全问题)

      对于服务器返回的JSON字符串,如果jquery异步请求没做类型说明,或者以字符串方式接收,那么需要做一次对象化处理,就是将该字符串放于eval()中执行一次:

    var dataObj=eval("("+data+")");  // 转换为json对象 

      而使用eval解析JSON对象方法如下:

    var json = eval('({name:"Jane",age:25,job:"teacher"})');
    document.write(json.name);    // Jane
    document.write(json.age);       // 25
    document.write(json.job);        // teacher

      这两种方法都不是太理解,不过现在懂得了后台和前端传值不能直接使用,要通过转换之后才能使用。

    2.在自定义ajax()方法的时候,想要改变不同的success函数值可以将传入的参数封装成一个对象:

    function doAjax( obj ); // 自定义一个ajax方法
    
    $(window).on("load",function(){
       var param={
            type : ' post ',
            data : {
                name : "Jane",
                age : "25",
                job : "teacher"
            },
            dataType : "json",
            success : function(){
                alert("Jane is a  girl");
            }
        };   //第一个对象
    
           var otherParam={
            type : ' post ',
            data : {
                name : "Jim",
                age : "27",
                job : "doctor"
            },
            dataType : "json",
            success : function(){
                alert("Jim is a boy");
            }
        };    //第二个对象
    
        doAjax(param);    //第一个对象作为参数传给doAjax方法
        doAjax(otherParam);    //第二个对象作为参数传给doAjax方法
    
    })

          当要传入一个自定义函数的参数很多,并且无法统一函数有哪些参数的时候,可以将参数封装成一个对象传入。

  • 相关阅读:
    css实现多行文本溢出显示省略号(…)全攻略
    Git使用教程
    requireJS对文件合并与压缩(二)
    requireJS(版本是2.1.15)学习教程(一)
    谷歌浏览器javascript调试教程
    IPMITool driver
    ironic的自动化脚本
    serial console
    如何将自己写的代码上传到github上
    硬件检查
  • 原文地址:https://www.cnblogs.com/koto/p/5389522.html
Copyright © 2011-2022 走看看