我有一个从控制器传递到视图的序列化字符串:
控制器:
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一样简单。 我正在使用最新版本的谷歌浏览器,Firefox和IE,所以它应该工作。
答案 0 :(得分:2)
虽然你的success
函数没有显示在给出的其他AJAX选项的上下文中,但我猜你正在传递{j}的dataType
选项,或者正在使用$.getJSON
或类似的东西。
如果是这种情况,jQuery在将其传递给success
时已经为您解析了JSON,因此您不需要(也不能)再次解析它。您可以简单地使用您的数据结构(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