Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Как передать переменную через POST ajax'ом в php?
Форумы портала PHP.SU » » HTTP и PHP » Как передать переменную через POST ajax'ом в php?

Страниц (1): [1]
 

1. Hawkmoth - 17 Мая, 2012 - 21:27:40 - перейти к сообщению
В общем, сломал себе голову. Информации много, но так ничего толкового для себя и не вынес. Как ПРОЩЕ и удобнее всего передать строковое значение из js через ajax в php? Использую json. Делаю так:
CODE (javascript):
скопировать код в буфер обмена
  1. function gotoserver () {
  2. var location=document.getElementById('Id1').value;
  3. $.post( './obr.php', location, success, 'json');
  4. function success(msg)   {
  5. alert (msg);
  6. }
  7. }


Судя по алерту, данные до сервера доходят. Но КАК получить присланную строку в php? Собственно, мне нужно только значение этого самого document.getElementById('Id1').value, больше ничего. Может, я нагородил лишнего? Пробовал еще так:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. var location='{\"location\":\"'+document.getElementById('Id1').value+'\"}';
  3. $.post( './obr.php', location, success, 'json');
  4. function success(msg)   {
  5. alert (msg);
  6. }
  7. }


А в php пытался выловить нужную переменную через $_POST['location'], но массив $_POST ожидаемо пустой... Понимаю, что туплю. Но подскажите, где?
2. kappa - 17 Мая, 2012 - 22:58:54 - перейти к сообщению
В Jquery это выглядит так:

var name = "Передаю данные";
$.post('./obr.php', {name: name}, function(data) {alert(data)});

name -переменная которую передаем
function(data) {alert(data) - это calback функция которая вернет данные с скрипта obr.php
В файле obr.php
$a = $_POST['name'];
echo $a;
3. Hawkmoth - 17 Мая, 2012 - 23:24:22 - перейти к сообщению
Пытаюсь так:

CODE (javascript):
скопировать код в буфер обмена
  1. <script type='text/javascript'>
  2. function gotoserver() {
  3. var location=document.getElementById('location').value;
  4. $.post( './obr.php', {dat:location}, success, 'json');
  5. function success(msg)   {
  6. alert (msg);
  7. }
  8. }


В обработчике php пишу:
PHP:
скопировать код в буфер обмена
  1. echo $_POST['dat']


Ничего не выводитсяНедовольство, огорчение

На всякий случай полный листинг файла index.php:
CODE (html):
скопировать код в буфер обмена
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <head>
  3. <title>Старница 1</title>
  4. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
  5. </head>
  6. <body>
  7. <select id='location'>
  8. <option>Локация 1</option>
  9. <option>Локация 2</option>
  10. <option>Локация 3</option>
  11. </select>
  12. <input type='button' value='Выбрать ' onclick='gotoserver();' />
  13.  
  14. <script type='text/javascript'>
  15. function gotoserver() {
  16. var location=document.getElementById('location').value;
  17. $.post( './obr.php', {dat:location}, success, 'json');
  18. function success(msg)   {
  19. alert (msg);
  20. }
  21. }
  22. </script>
4. OrmaJever - 17 Мая, 2012 - 23:42:28 - перейти к сообщению
Hawkmoth но у location'a нету value и переменая скорее всего не определена, посмотрите ошибки.
5. Hawkmoth - 17 Мая, 2012 - 23:53:35 - перейти к сообщению
Нет, это просто я так коряво краткий вариант страницы накидалУлыбка

На самом деле, kappa всё правильно написал, и пример работает, просто я ждал alert с выводом переданных данных, а клиент мне фигу показывал. Судя по всему, из-за формата ожидаемых данных. Вот так всё работает:
CODE (javascript):
скопировать код в буфер обмена
  1. function gotoserver() {
  2. var location=document.getElementById('location').value;
  3. $.post( './obr.php', {dat:location}, success, 'text');
  4. function success(msg)   {
  5. alert (msg);
  6. }
  7. }

(Формат 'json' заменен на 'text')

В файле .php:
PHP:
скопировать код в буфер обмена
  1. echo $_POST['dat'];
6. kappa - 18 Мая, 2012 - 09:00:59 - перейти к сообщению
CODE (javascript):
скопировать код в буфер обмена
  1. function gotoserver() {
  2. var location = $('#location').val();
  3. $.post( './obr.php', {dat:location}, success);
  4. function success(msg)   {
  5. alert (msg);
  6. }
  7. }

 

Powered by ExBB FM 1.0 RC1