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
        */

posted @ 2010-09-14 14:03  shenbin23  阅读(762)  评论(0编辑  收藏  举报