2016-11-03 2 views
0

Я знаю, что этот вопрос задавался несколько раз на этом форуме, но я думаю, что чего-то не хватает. Или, может быть, это потому, что я не знаю JSON/AJAX, что хорошо.Использование массива Javascript в PHP

Вот что.
Я получил код javascript/JQuery на странице, скажем, на index.php (еще не в отдельном JS-файле), который позволяет помещать любое число в массив от 1 до 10. Если он уже в нем, он будет удаляться при повторном нажатии.

Теперь я хочу передать этот массив JS на PHP, поэтому я могу создавать таблицы с ним.

Вот что я сделал.

$(".Go").click(function() { 
    var enc = JSON.stringify(tableChoice); 
    $.ajax({ 
     method: 'POST', 
     url: 'calc.php', 
     data: { 
      elements: enc 
     }, 
     success: function(data) { 
      console.log(enc); 
     } 
    }); 
}); 

И в моем calc.php я получил это, чтобы получить значения для PHP.

<?php 
    $data = json_decode($_POST['elements'],true); 
    echo $data; 
?> 

Сейчас здесь идет нуб вопрос:
Если я нажимаю кнопку мой (.go), что на самом деле происходит?
Поскольку console.log позволяет мне видеть правильные значения, но как мне получить к нему доступ? Страница (index.php) автоматически не переходит к calc.php.
Когда я использую <form> тег будет принимать меня там, но он показывает эту ошибку:

Undefined индекс: элементы

Я уверен, что я смотрю на это неправильный путь, интерпретируя это неправильно. Может кто-то, пожалуйста, помогите мне понять, что я должен делать, чтобы продолжить работу с массивом JS в PHP.

+0

Вы уверены, что вы не хотите 'console.log (данные)'? –

+0

Ajax, или асинхронный JavaScript и XML - это концепция, предназначенная для интерактивных веб-сайтов, на которых данные могут быть отправлены и собраны с сервера без необходимости обновления веб-сайта. Ваш браузер не должен перейти к 'calc.php'. Вместо этого «calc.php» возвращает данные обратно в ваш файл 'index.php'. '$ data', однако, является массивом здесь. Таким образом, вы не получите возвращаемое фактическое значение. Попробуйте 'var_dump ($ data); вместо этого посмотрим, что я имею в виду. – icecub

+0

Думаю, вам нужно прочитать учебник о том, как работает AJAX. Весь смысл AJAX заключается в том, что он не перезагружает страницу. Он просто отправляет ответ, и код Javascript решает, что с ним делать. Если вы хотите отобразить результат на странице, вы используете методы DOM или jQuery, которые делают это, например '$ (" # id "). Text (data)' – Barmar

ответ

0

С запросом XHR вы не выполняете перезагрузку страницы. С помощью метода $ .ajax вы отправляете данные на сервер и получаете информацию обратно. Поскольку вы можете видеть информацию в консоли, запускается метод успеха.

Возможно, вам стоит взглянуть на ваш DevTools, например, на Chrome. Когда вы открываете вкладку «Сеть» и фильтруете XHR, вы видите, что происходит. Вы также можете проверить свой XHR, просмотрев данные, которые вы отправили и получили.

Итак, мой вопрос к вам: что вы хотите совершить onSuccess()? Что должно произойти с данными, полученными от вашего бэкэнда?

0

В JavaScript:

$(".Go").click(function() { 
    var enc = JSON.stringify(tableChoice); 
    $.ajax({ 
     method: 'POST', 
     url: 'calc.php', 
     data: { 
      "elements="+enc; 
     }, 
     success: function(data) { 
      console.log(data);// You can use the value of data to anywhere. 
     } 
    }); 
}); 

В PHP:

<?php 
if(isSet($_POST[elements])) 
{ 
    $data = json_decode($_POST['elements'],true); 
    echo $data; 
} 
else 
{ 
    echo "Elements not set"; 
} 

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