2016-08-19 4 views
1

私はミニ言語用の通訳を作成しており、関連情報をハッシュマップに保存しています。これらのハッシュマップをJSON stringifyでコンバートし、サーバー側にajax経由で送信します。私は簡単に"kv":["24","23","20"]ビットのうち、PHPの配列を作ることができるか、サーバ側でハッシュマップをajax経由で転送してPHP配列に変換する

{"kv":["24","23","20"],"interface":"dropdown"},{"ma":["2","3","4"],"interface":"button"} 

:これは

は、私は、サーバー側にオーバー送信てるポストJSON文字列化コードであります特定の文字を検索することなく? AJAX上JSON配列の出力を送信する前に

である:

{"kv":["24","23","20"],"interface":"dropdown"},{"ma":["2","3","4"],"interface":"button"} 

それを受信した後、データは:

{"kv":["24","23","20"],"interface":"dropdown"},{"ma":["2","3","4"],"interface":"button"} 

htmlspecialchars_decode関数の後、それは次のようになる。

{"kv":["24","23","20"],"interface":"dropdown"},{"ma":["2","3","4"],"interface":"button"} 

json_decoding私はnullを返します

Ajaxコード:

function addValues(jsonArray) { 

     alert(jsonArray); 

     $.ajax({ 

     url: 'insertTree.php', 
     type: 'POST', 
     data: 'dataToReceive=' + jsonArray, 
     success: function(data) { 
     //called when successful 
     alert(data); 
     window.location.reload(); 
     }, 
     error: function(e) { 
     //called when there is an error 
     console.log(e.message); 
     } 
     }); 

    } 

コードを受信し、PHP:

$dataReceived = htmlspecialchars(strip_tags($_POST["dataToReceive"])); 

$dataRefined = htmlspecialchars_decode($dataReceived); 

$var = json_decode($dataRefined, true); 

var_dump($var['kv']); //null 
+0

あなたはそれらを個別に行うか、オブジェクトに入れるかのどちらかです。 – AbraCadaver

+0

あなたはなぜエンティティのすべてのことをやっているのか分かりませんし、おそらくJSでそれを構築するより良い方法がありますが、オブジェクトにそれらを必要とします: '$ var = json_decode(" [$ dataRefined] "、true);' – AbraCadaver

+0

ハッシュマップを準備する方法がわからず、サーバーに送信するための文字列に変換するのが最適です。ハッシュマップの配列を扱うときに特に複雑になっています。 – Snupas

答えて

1

使用json_decode値を取得します。あなたのベース文字列は有効なJSONではないので、私はそれを得るために少しマッサージしました

$string = '{"kv":["24","23","20"],"interface":"dropdown"},{"ma":["2","3","4"],"interface":"button"}'; 
$data = explode('|', str_replace('},{', '}|{', $string)); 

foreach($data as $str) { 
    $var = json_decode($str, true); 
    if(isset($var['kv'])) var_dump($var['kv']); 
} 
+0

jsonのデコードがnullを返します。 jsonの形式が正しくありませんか?私はすべての出力で質問を更新します – Snupas

+1

ええ、私はそれを実現しました。私はあなたの編集した弦を取り、少しマッサージした。上のコードは – Machavity

+0

で動作するはずです。爆発の修正により、すべてのデータ配列エントリをループして値を取得できます – Snupas

関連する問題