2012-03-06 12 views
0

javascript配列をPHPに渡す方法

配列myWorkoutを 'play_workout.php'に渡したいと思います。 私は 'play_workout.php'を開いて、myWorkoutの内容を表示します(この例の場合)。 (これが動作していることがわかると、myWorkoutのデータを解析してデータベースに書き戻します)。 firebugでエラーが発生していませんが、play_workoutが開かれていないか、配列オブジェクトmyWorkoutをキャプチャしていません。

私はこれをもう一度見ていただきたいと思います。 いつものように!

ページworkout_now.php

<div id="playworkout"><button onClick="playWorkout()">Play Workout</button></div> 

JAVASCRIPT

function playWorkout(){ 

    var arr = $("#dropTargetframe > li").map(function(){ 
    return $(this).attr('data-id');}).get(); 

    var myRoutine = arr; 
    var myWorkout = new Array(); 
     for (var i in myRoutine){ 
      if (myRoutine[i]) 
      myWorkout.push(myRoutine[i]); 
      } 
      //array appears like ["4", "5", "1", "4"] 
      JSON.stringify(myWorkout); 
      encodeURIComponent(myWorkout); 

     var url = "http://localhost/RealCardio/play_workout.php"; 

     $.get(url, myWorkout); 

ページplay_workout.php

<?php 
... 
$arrayWorkout = json_decode($_REQUEST['myWorkout']); 
print_r($arrayWorkout);  
... 
?> 
+3

正確な複製http://stackoverflow.com/questions/891320/how-to-pass-a-javascript-object-array-to-php-using-post – samccone

答えて

1

あなたのコメントのように配列要素は、任意の特殊文字、数字だけが含まれていないだけで、サーバーにあなたが望むように、これを

var myWorkoutPost=myWorkout.join('x'); 

交通を行うことを想定すると、(フォームの隠しフィールド、AJAX、...)とPHPで

$myWorkout=explode('x',$_REQUEST['myWorkoutPost']); 
+0

.join(x)にはどのような値が入りますか? 「x」にはどのような価値が入りますか? – Derek

+0

申し訳ありませんが、タイプミスでした。「x」ではなく「x」であったはずです。私は自分の答えを編集しました。 –

0

エンコードJSONにこの配列を行い、PHPスクリプトに送信し、$ _POSTでそれを受け取ります。 最後に、PHPスクリプトでJSONをデコードします。

1

PHPとJavascriptの両方でJSONエンコーディングを使用するので、JSONエンコードに最適な方法を指定し、PHPページの非表示フィールドとしてPOSTしてJSONデコードを使用するといいでしょう。

http://www.php.net/manual/en/function.json-decode.php

0

それがどうなる時間のほとんどすべての構造化された値が99%のための作業の流れ。

  • JSON.stringify([1,2,3])を使用すると、文字列が"[1,2,3]"になります。 encodeURIComponent("[1,2,3]")
  • エンコード、それはあなたが今、それがPHPに値を送信するためにXMLHttpRequest以上jQuery.get()を使用しようとPHPやその他のサーバー側の言語に送信されるように保存します。この"%5B1%2C2%2C3%5D"
  • のようなものがあるでしょう。 $arrayOfValues = json_decode($_REQUEST['name_of_parameter']); - - print_r($arrayOfValues);

    通常は、古いブラウザをサポートするために、JSONライブラリを含める必要があるだろう :あなたはこれを行うだろうとPHPで

JSONの詳細情報

+0

これは私がjavascriptで渡す方法です - $ .get( 'play_workout.php'、myWorkout、 ''、 'json'); – Derek

+0

少し質問を改訂しました。もう一度見てもらえますか? – Derek

関連する問題