2011-08-09 8 views
0

オブジェクトデータをjqueryからPHPに渡すときにレンガの壁にぶつかっています。私はまだOOPの周りに頭を抱えようとしています。オブジェクトデータを使用して表示するPHPとjson/jquery

コードは次のとおりです。

 <script type ="text/javascript"> 
     $(function() { 


    $(".button").click(function() { 
      //alert("click"); 


      var jsonvar1 = {"skillz": { 
          "web":[ 
            {"name": "html", 
            "years": "5" 
            }, 
            {"name": "css", 
            "years": "3" 
            }], 
          "database":[ 
            {"name": "sql", 
            "years": "7" 
            }] 
     }}; 



      $.ajax({ 
      url: "test2.php", 
      type: 'POST', 
      data: 'regemail=' + jsonvar1, 



       success: function(result) { 
       alert(result); 

       }, 
       error:function (xhr, ajaxOptions, thrownError){ 
       alert(xhr.status); 
       alert(thrownError); 
      } 
      }); 

     }); 
     }); 


     </script> 
    </head> 
    <body> 

<input type="button" id="regSubmit" class="button" value="Register!" /></br></span> 
<script> 
$('input[type=button]').attr('disabled', false); 
    //alert('test'); 
</script> 

上記のコードは3つの事を行います。ボタンのクリックをキャッチし、変数をeclares(jsonvar1)し、その変数に対するajaxリクエストをPHPバックエンドに実行します。

PHPバックエンドで今すぐコード:

if (filter_has_var(INPUT_POST, "regemail")) { 

    $data = $_REQUEST["regemail"]; 

    //echo "<br>I got some data!</br>"; 

    //print_r($data); 

    //echo $data->skillz; 

    //echo $data; 

    var_dump($data); 

} else { 

echo "No Data."; 
} 

(安全にすべてのエコーを無視して、上記のPHPにダンプ私はいくつかの方法でデータを使用しようとしてについて暴れるだろうと。)

質問:PHPのオブジェクトからデータを変数または配列にプルするにはどうすればよいですか?または、好きな場合は、そのオブジェクトの値を使って直接どのように作業できますか?http://api.jquery.com/jQuery.getJSON/

...私はそれがJSONであることを私の要求を伝えることを怠ってきた場合、私は思ったんだけど

を(それはオブジェクトであり、私はいくつかの他の無関係な間違いを犯していないんだと仮定して)〜 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 〜 編集:

私は追加しようとしました echo json_decode($ data);私のPHPコードには が含まれていますが、空のデータセットが返されます。

私はまた、dataType: 'json'、 を私のajaxクエリーに入れようとしました。

まだ運がないと思われます。

+0

http://docs.jquery.com/Specifying_the_Data_Type_for_AJAX_Requests –

+1

PHP json関数(http://www.php.net/manual/en/ref.json.php)を調べましたか?私は間違っているかもしれないが、私はjson_decodeがまさにあなたが探しているものだと思う。 –

答えて

0

サーバ側ではjson_encodeを使用します。

if (filter_has_var(INPUT_POST, "regemail")) { 
    $data = $_REQUEST["regemail"]; 

    //echo "<br>I got some data!</br>"; 
    //print_r($data); 
    //echo $data->skillz; 

    echo json_encode($data); 
} else { 
    echo "No Data."; 
} 
+0

hm、これは[オブジェクトオブジェクト] – jeremy

+0

を返します。私はあなたの答えを受け入れたことに気付きましたが、あなたのコメントは問題を示唆しています。あなたは何か他に遭遇しましたか? – matpie

1

あなたは見落とすことは容易であるという簡単なエラーに遭遇している:あなたが「regemail =」+演算子で、それは文字列に変換され、それを連結する際にjsonvar1は、オブジェクトが含まれている、と - ではなく、あなたが意図した方法で。 JSON変換が自動的に行われないため、結果の文字列は「[object Object]」です。代わりに、ラインはあなたのPHPファイルで

data: 'regemail=' + JSON.stringify(jsonvar1), 

あるべき@sirlancelotがすでに言ったように、

$data = json_decode($data); 

ラインは、あなたで動作するようにオブジェクトを提供します。

+0

優秀、ありがとう! – jeremy

関連する問題