2017-05-21 22 views
0

json_encodeの結果から二重引用符を置き換えます。jqueryでjson配列のデータを二重引用符で囲まないで表示するには

$json_string = json_encode($data); 
$json_string = str_replace('"','',$json_string); 
echo $json_string; 

そして、forループを使用してデータをフェッチします。このようなコード:

$("#gnumbers").change(function() { 
    var id = $(this).find(":selected").val(); 
    var dataString = 'grpid='+ id;  
    $.ajax({     
     url: 'getGroupNumbers.php', 
     dataType: "json", 
     data: dataString, 
     cache: false, 
     success: function (data) { 
      var i, l; 
      for (i = 0, l = data.length; i < l; i++) { 
       $("#num").append(data[i].cnumber + ","); 
       //console.log(data[i].cnumber); 
      } 
     } 
    }); 
}); 

私はこのようにconsole.logリターンは何もなく、ネットワーク結果何かがチェック:[{cnumber:8801752992444、GROUP_ID:3}、{cnumber:8801795978968,8801936761915、GROUP_ID:3}]

str_replaceを使用しないと、データを正しく表示できます。あなたはカンマ区切りで複数の行を追加することがわかります。 私の質問は、この出力結果を表示する方法です。 助けてください。ありがとう

+1

二重引用符を置き換える必要がある理由は何ですか?あなたがこれを行うときに私が言うことができる限り、有効なJSON応答 –

+0

を返していないだけです。この値をURLパラメータで渡し、サーバー側はその値に属していません。二重引用符では、私は構文に一致することはできません。 –

+2

何の構文ですか? – tadman

答えて

1

有効なJSON形式では、キーを二重引用符で囲む必要があります。あなたはstr_replaceを行うと、二重引用符を削除すると、JSONは無効になり、ブラウザはそれを

を解析することはできませんあなたはintに文字列からcnumberを変換したいなら、あなたはjson_encode

2

$dataを渡す前に、それをを行う必要があります私はjson_encodeの結果から二重引用符を置き換えます。

これは賢明ではありません。

あなたは基本的に有用なシリアル化フォーマットの意味を破壊しています。引用符は必須です。構造からデータを確実に分離するにはどうすればいいですか?文字列のカンマと、次のフィールドの開始時期を示す制御文字としてカンマを区別する方法はありますか?これは、文字列置換を行うのと同じくらい簡単ではありません。あなたが独自のフォーマットを作りたいと思ったら...あなたはそれをすることができると思いますが、あなたはこれらのことを考慮に入れなければなりません。

既に存在し、十分にテストされているフォーマットに固執する必要があります。 JSONは幅広く互換性のあるフォーマットです。そのため、JSONはそれほど頻繁に使用されています。何らかの理由でよりコンパクトなものが必要な場合は、CBORなどを検討してください。あなたはディスプレイ異なっ何かしたい場合は、あなたが今やっているように、あなたは、データ・サーバ側を破壊しませんどのように私はjQueryのに二重引用符JSON配列データなしで表示することができます

...あなたは後で表示するためにそれを再フォーマットするだけです。

JavaScript内のクライアントサイドの引用符を削除することもできます。クライアントに有用な構造化データを依頼する必要があるサーバ側で行うことは、まったく恐ろしい考えです。

+0

あなたの考えに感謝します。私はちょうどしたい、URLのパラメータでこの値を渡すと、サーバー側はその値に属していません。二重引用符では、私は構文に一致することはできません。 –

+0

@Roketvai何ですか?あなたのコメントは私にとって意味をなさない...詳細を追加して、もう一度やり直すことはできますか? JSONには、パラメータを持つURLを含む任意の有効な文字列を含めることができます。 – Brad

0

$('#num').append(data.map(function(d) { 
    return d.cnumber; 
}).join(',')); 

$json_string = json_encode($data); 
echo $json_string 

を試してみてください。そしてsuccessコールバックでブラッドが指摘したように、サーバ側の二重引用符を置き換えるものではありません。

関連する問題