Получение переменных PHP из формы ввода AJAX - PullRequest
1 голос
/ 14 апреля 2009

У меня есть форма в PHP, отправляющая переменные в файл PHP, который должным образом вставляет их в таблицу MySQL.

В настоящее время у меня есть div, отображающий ответ от PHP (что-либо, что печатается PHP).

Все отлично работает. Проблема в том, что я хочу использовать переменные, которые создаются / обновляются в процессе вставки PHP MySQL. То есть не только показать, что напечатано в этом файле PHP, но и использовать эти переменные.

Я видел сложное использование кодировки JSON для преодоления этого разрыва, но я хотел бы знать, если это самый простой подход. И если у кого-то есть хорошие ссылки или примеры на эту тему.

Ответы [ 4 ]

1 голос
/ 14 апреля 2009

Я предполагаю, что вы хотите, чтобы на вашу страницу можно было отправлять несколько фрагментов данных через AJAX и манипулировать ими.

JSON - действительно самый простой способ сделать это. Если вы используете PHP5, вы можете использовать json_encode () со стороны PHP для отправки сложного типа данных (например, объекта или массива) обратно на страницу браузера. Затем в javascript вы используете eval () для данных, которые отправляются обратно (например, var data = eval (response);), чтобы проанализировать их обратно в пригодный для использования сложный тип в javascript.

Существует множество учебных пособий, которые покажут вам, как это сделать, и объяснят это более подробно, чем когда-либо здесь.

0 голосов
/ 14 апреля 2009

Просто используйте функцию "echo", чтобы поместить переменные PHP в стандартный вывод.

echo $ myVarName;

Или, я предпочитаю printf (), обязательно проверяйте наличие HTML во входных данных ДО , которые вы выводите, чтобы избежать проблем XSS.

Используйте что-то вроде этого:

printf («Вы ввели:% s», strip_tags (% myInputVar));

Кроме того, не забывайте использовать средства форматирования% d или% f при выводе числа для лучшей безопасности.

0 голосов
/ 14 апреля 2009

Вам не нужно просто показывать, что «напечатано в этом PHP-файле», ваш PHP-файл может печатать JavaScript-рекомендации обратно на вашу страницу. После получения ответа вы можете выполнить эти команды. Мне нравится использовать для этого функцию eval, но многие люди здесь отговаривают вас от этого:)

0 голосов
/ 14 апреля 2009

Используйте PrototypeJS и делайте так:

Иметь PHP вроде этого

 $jsonHeader = array();  

 if($_REQUEST['param1'])  
 {  
   echo '<p>You passed ' . $_REQUEST['param1'] . '</p>';  
   $jsonHeader['status'] = 'Success';  
 }else  
 {  
   $jsonHeader['status'] = 'Failed because the request was invalid';  
 }  

 if(is_array($jsonHeader) and sizeof($jsonHeader) > 0)  
 {  
   header('X-JSON: (' . json_encode($jsonHeader) . ')');  
 } 

Тогда сделайте ваш Ajax-вызов вот так

new Ajax.Request('dostuff.php', {  
   method:  'get',  
   parameters:  {'param1':  'this is param 1'},  
   onSuccess:  function(response, jsonHeader){  
    if(jsonHeader['status'] == 'Success'){  
      //Everything is OK, do stuff  
    }else{  
      alert(jsonHeader['status']);  
    }  
   },   
   onFailure:  function(){  
     alert('Fail!');  
   }  
}); 

Прототип захватывает заголовок X-JSON, возвращаемый PHP, и автоматически устанавливает аргумент jsonHeader функции onSuccess в массив Javascript со значениями, которые были изначально установлены в PHP.


Приведенный выше сценарий хорош, если объем данных, которые вы возвращаете в Javascript, вписывается в заголовок HTTP.

Если вам нужно вернуть много данных, просто сделайте PHP-вывод результата в JSON-кодировке, а не сделайте его частью заголовка. Затем вы можете использовать метод evalJSON () объекта ответа в вашем вызове Ajax.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...