zoukankan      html  css  js  c++  java
  • C#与jQuery异步交换数据的整的要死的两个小问题

      /*            C#与jQuery异步交换数据的整的要死的两个小问题                

    C#代码        

    --------------------------------------------------        

    string jsonArr = "[";
            foreach (LT.Model.foodCategory objCt in objList)        {            

    jsonArr += string.Format("{{\"cID\":\"{0}\",\"cName\":\"{1}\",\"isOpen\":\"{2}\"}},", objCt.cID, objCt.cName, objCt.isOpen);        

    }
            return jsonArr.TrimEnd(',') + "]";        

    ---------------------------------------------------
            C#中string.Format方法内部通过正则RegExp('\\{' + (i-1) + '\\}','gm')来解析"{}",        

    但是json自身有个"{}",所以在外面在套个"{}"就OK了,嘿嘿~

            C#代码        

    --------------------------------------------------         

    string jsonArr = "[";
            foreach (LT.Model.foodCategory objCt in objList)        { 

               jsonArr += string.Format("{{cID:‘{0}’,cName:‘{1}’,isOpen:‘{2}’}},", objCt.cID, objCt.cName, objCt.isOpen);      

      }
            return jsonArr.TrimEnd(',') + "]";       

     ---------------------------------------------------
            刚开始是这么写的,不是{{\"cID\":\"{0}\",\"cName\":\"{1}\",\"isOpen\":\"{2}\"}},        

    是这么写的{{cID:‘{0}’,cName:‘{1}’,isOpen:‘{2}’}}
            结果$.ajax的success方法返回不出来这串string       

     原因是$.ajax传入的一个参数dataType:json,        

    改成text就能出来,不过是string,不是json,还要自己处理,不是我要的
            是json的时候 $.ajax执行了
             parseJSON: function (data) {            

    if (typeof data !== "string" || !data) {                

    return null;           

     }
                // Make sure leading/trailing whitespace is removed (IE can't handle it)            data = jQuery.trim(data);


                // Make sure the incoming data is actual JSON           

     // Logic borrowed from http://json.org/json2.js            

    if (/^[\],:{}\s]*$/.test(data.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@") .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]") .replace(/(?:^|:|,)(?:\s*\[)+/g, ""))) { >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>false

                    // Try to use the native JSON parser first                

    return window.JSON && window.JSON.parse ? window.JSON.parse(data) :(new Function("return " + data))();
                } else {               

     jQuery.error("Invalid JSON: " + data);            

    }       

     },
            这个方法,是单引号的时候过不了那段正则的        

    得写成转义符号就能过那段正则,并通过window.JSON.parse(data) 执行        

    eval(data),把string转化成json。        

    其实改成{‘cID’:‘{0}’,‘cName’:‘{1}’,‘isOpen’:‘{2}’}        

    key加上引号,不用转义符能通过正则的验证,不过返回的是string,不是json
            */

  • 相关阅读:
    k8s升级
    k8s常用命令kubeadm
    k8s部署安装-更新时间2020-10-5(docker)
    centos7安装后的优化-2019-10-12更新
    gitlab安装后出现的web IDE显示报错问题
    奋斗的路上
    Spring Boot之过滤器
    java 并发
    jar包使用
    找不到xsd文件思路
  • 原文地址:https://www.cnblogs.com/shenbin/p/1825883.html
Copyright © 2011-2022 走看看