0

我有一个从控制器到视图的序列化字符串:

控制器:

var serialize = new JavaScriptSerializer();
return Json(new
{
data = serialize.Serialize(obj)
}, JsonRequestBehavior.AllowGet);

json字符串:

[{"indiceName":"Caracter","indiciId":24,"indiceId":1,"tamanhoIndice":10,"mask":null,"indiceObr":1},

{"indiceName":"Numérico","indiciId":25,"indiceId":2,"tamanhoIndice":10,"mask":null,"indiceObr":0},

{"indiceName":"AlfaNumérico","indiciId":26,"indiceId":3,"tamanhoIndice":10,"mask":null,"indiceObr":0}]

据我所知,现代浏览器应该能够使用简单的 Json.parse() 解析该字符串

看法:

success: function (data) 
         {
            $('.dinamic').remove();
            console.log(data);
            var obj2 = JSON.parse(data);
            console.log(obj2);
         }

我可以在第一个 console.log 中看到该字符串,但从第二个中我什么也没得到。还有什么我应该看的,因为我读过的所有帖子都只是用一个 JSON.parse 做的简单。我正在使用最新版本的 google chrome、firefox 和 IE,所以它应该可以工作。

4

1 回答 1

2

尽管您的success函数未在给出的其他 AJAX 选项的上下文中显示,但我猜您正在传递dataType“json”选项,或者正在使用$.getJSON或类似的东西。

如果是这种情况,jQuery 已经在它传递给你的时候为你解析了 JSON,success所以你不需要(也不能)再次解析它。您可以简单地使用您的数据结构(data[0]. indiceName等)。

(以下代码在http://jaaulde.com/test_bed/GuilhermeLongo/实时运行)

考虑以下 PHP(存储在json.php中):

<?php
exit('[{"indiceName":"Caracter","indiciId":24,"indiceId":1,"tamanhoIndice":10,"mask":null,"indiceObr":1},{"indiceName":"Numérico","indiciId":25,"indiceId":2,"tamanhoIndice":10,"mask":null,"indiceObr":0},{"indiceName":"AlfaNumérico","indiciId":26,"indiceId":3,"tamanhoIndice":10,"mask":null,"indiceObr":0}]');

以及以下JS:

<script src="http://code.jquery.com/jquery.min.js"></script>
<script>
  $.ajax({
    url: 'json.php',
    type: 'get',
    dataType: 'json',
    success: function (data) {
      console.log(data[0]);
      console.log(data[0].indiceName);
    },
    error: function () {
      throw new Error('AJAX request error occurred.');
    }
  });
</script>

它导致以下输出的日志信息:

GET http://jaaulde.com/test_bed/GuilhermeLongo/json.php
    200 OK
    99ms    
    jquery.min.js (line 3)

Object
    {indiceName="Caracter", indiciId=24, indiceId=1, more...}/test_...eLongo/
    (line 8)

Caracter
于 2013-01-29T13:50:15.813 回答