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 でその文字列を確認できますが、2 番目からは何も得られません。私が読んだすべての投稿は、単一の JSON.parse を使用する場合と同じくらい単純にしか行わないため、他に確認すべきことはありますか? Google chrome、firefox、IE の最新バージョンを使用しているので、動作するはずです。

4

1 に答える 1

2

関数は、指定されている他の A​​JAX オプションのコンテキストでは表示されませんが、「json」successのオプションを渡しているか、または同様のものを使用していると思います。dataType$.getJSON

その場合、jQuery は、JSON が渡されるまでに既に 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 に答える