2012-03-06 6 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'); 

Transport это на сервер так, как вы хотите (форма Скрытое поле, AJAX, ..) и в PHP сделать

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

Что бы я заполнил в .join (x)? Какое значение имеет значение «x»? – Derek

+0

Извините, была опечатка, должна была быть '' x'', а не 'x', я отредактировал свой ответ. –

0

Encode этот массив JSON, отправить его в PHP скрипт и делате его с $ _POST. Наконец, расшифруйте JSON в скрипте php.

1

Как PHP, так и Javascript используют JSON-кодирование, поэтому я бы сказал, что лучшим способом было бы JSON кодировать массив, а затем POST его как скрытое поле на странице PHP и использовать декодирование JSON.

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

0

Поток работы для почти всех структурированных значений 99% времени он будет делать.

  • Использование JSON.stringify([1,2,3]) оно даст вам строку "[1,2,3]".
  • Encode его encodeURIComponent("[1,2,3]") вы будете иметь что-то вроде этого "%5B1%2C2%2C3%5D"
  • Теперь это сохранить для отправки в PHP или любой другой стороне сервера языка пытаются использовать XMLHttpRequest или лучше jQuery.get() для отправки значения PHP.

В PHP вы могли бы сделать это: - $arrayOfValues = json_decode($_REQUEST['name_of_parameter']); - print_r($arrayOfValues);

Обычно вам нужно включить библиотеку JSON для поддержки старых браузеров. Дополнительная информация о JSON.

+0

Я бы это передал в javascript - $ .get ('play_workout.php', myWorkout, '', 'json'); – Derek

+0

Я немного пересмотрел вопрос. Можете ли вы еще раз взглянуть? – Derek

Смежные вопросы