2012-04-16 14 views
0

私のPHPスクリプトで、AJAX経由でJSONをデコードする際に問題が発生しています。JSONがPHPによってデコードされていません

のjQuery:

$.ajax({ 
    url : 'admin/modifyPermissions', 
    type : 'post', 
    data : { 
     'JSON' : JSON 
    }, 
    success : function(msg){ 
     if(msg == '1') { 
      alert('Permissions saved successfully'); 
     } else { 
      alert(msg); 
     } 
    } 
}); 

PHPスクリプト:

public function modifyPermissions(){ 

    if(isset($_POST['JSON']) && !empty($_POST['JSON'])) { 
     $json = json_decode($_POST['JSON'],true); 
     if($json !== NULL && $json !== FALSE) { 

     } elseif($json === NULL){ 
      die('The string passed is not a valid JSON object and cannot be decoded.' . "\n" . $_POST['JSON']); 
     } else { 
      die('There was an error with the JSON string'); 
     } 
    } else { 
     die('No JSON string was sent!'); 
    } 
} 

渡されるJSONがよく私に形成さになります。

{"martin":{3,5},"user2":{3,4,5}} 

、PHPはnullを返しています。私は、PHP 5.2.7は私のサーバーにインストールされているので、私は)(

+5

なければならない{ "マーティン":[3,5]、 "USER2":[3,4,5]} '['の使用に注意してください'と'} 'を使った順序付けされたセットの場合' 'と'] ' – Matt

+1

JSONがうまくできているかどうかは問題ではありません。不確かな場合は、JSONバリデーターを使用してチェックしてください:http://jsonlint.com/ –

答えて

5
{"martin":{3,5},"user2":{3,4,5}} 

ない有効なJSONをjson_last_error使用することはできません。有効なJSONは次のようになります。

{"martin":[3,5],"user2":[3,4,5]} 
+0

うわー、それは恥ずかしいです。私はそれを見ていないとは信じられません。ありがとうございました! – Martin

0

有効なJSONを送信していないため、エラーです。 @Mattが追加したコメントを見てください。

PHPに送信する前に同じエラーを再現しないように、独自のJSON文字列を作成しようとしないで、JSが提供するものを使用してください。例:

var obj = { key: val, okey: oval } 
objJSON = JSON.stringify(obj) 
// objJSON is ALWAYS going to be valid json 
0

JSONが無効です。

{}という表記は、キーと値のペアを表します。ここでは、配列として使用しています。

あなたJSONあなたのJSONが 'でなければならない、

{"martin":[3,5],"user2":[3,4,5]} 
関連する問題