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 :: Версия для печати :: ajax вывод результата работы php
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » ajax вывод результата работы php

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

1. LEONeso - 24 Марта, 2011 - 14:38:02 - перейти к сообщению
Здравствуйте, подскажите, как вывести результат работы php скрипта (из отдельного файла) в действующий файл (index.php) с помощью AJAX ?

Требуется пример.

Я нашел что-то ,но не знаю что.
PHP:
скопировать код в буфер обмена
  1. # index.html
  2.  
  3. <html>
  4. <head>
  5.         <meta http-equiv='content-type' content='text/html;charset=utf-8' />
  6.         <script language="JavaScript" type="text/javascript" src="prototype.js"></script>
  7.         <script type="text/javascript">
  8.                 // ... ajax request ...
  9.                 function WTF(value_A, value_B)
  10.                 {
  11.                         new Ajax.Request("/request.php", {
  12.                                 method: 'post',
  13.                                 parameters: {
  14.                                         wtf_var_A: value_A,
  15.                                         wtf_var_B: 'много букоф!',
  16.                                         wtf_var_C: value_B,
  17.                                 },
  18.                                 asynchronous: true,
  19.                                 onComplete: function(json) {
  20.                                        
  21.                                         rst = eval('(' + json.responseText + ')');
  22.                                        
  23.                                         alert("wtf_var_A:" + rst.wtf_var_A + ", wtf_var_B:" + rst.wtf_var_B + ", wtf_var_C:" + rst.wtf_var_C);
  24.                                 }
  25.                         });
  26.                 }
  27.                 // ... ajax request ...
  28.         </script>
  29. </head>
  30. <body>
  31. <a onclick="WTF(111, 222); return;">тынц</a>
  32. <div id='request'></div>
  33. </body>
  34. </html>
  35.  
  36. # request.php
  37.  
  38. <?PHP
  39. header("Content-type: text/html; charset=utf-8");
  40.  
  41. $array = array();
  42.  
  43. foreach ($_POST as $key => $value) $array[] = '"'.$key.'": "'.$value.'"';
  44.  
  45. echo '{'.join(", ", $array).'}';
  46. ?>

(Добавление)
Нашел еще один пример, но он не работает: внешняя ссылка
но все написано красиво
CODE (html):
скопировать код в буфер обмена
  1. <table width="100%" border="0" cellspacing="0" cellpadding="0">
  2.                 <tr>
  3.                                 <td id="menu"><a id="1" href="javascript:void(0);">Link 1</a></td>
  4.                                 <td id="menu"><a id="2" href="javascript:void(0);">Link 2</a></td>
  5.                                 <td id="menu"><a id="3" href="javascript:void(0);">Link 3</a></td>
  6.                 </tr>                
  7. </table>


CODE (javascript):
скопировать код в буфер обмена
  1. $('td#menu a').click(function (){ //в первых скобках пишешь путь к блоку для которого должно выполняться это событие, 'td#menu а' - определяем что мы выполняем событие только при нажатии на ссылки, родителем которых является TD с айдишником MENU
  2. var id_elem = $(this).attr('id'); //определяешь ID элемента который был нажат
  3. var data = $(this).html(); //к примеру берем текст ссылки, можно взять любые данные
  4. $.ajax({
  5.                         type: "POST", //метод отправки, лучше использовать именно его для Ajax запросов
  6.                         url: "/some.php", //ссылка на файл, который будет обрабатывать данные
  7.                         data: "id=" + id_elem + "&data=" + data, //данные которые отправляются
  8.                         success: function(result)
  9.                         {
  10.  
  11.                               alert(result);//тут ты пишешь часть скрипта которая будет выполняться если данные были переданы и файл их обработал, result - в этой переменной будет хранится все что вернет тебе ПХП файл или при помощи return или при помощи любых функций отвечающих за печать, т.е. любой вывод(echo print и т.д.)          
  12.  
  13.                         },
  14.                         error: function()
  15.                         {
  16.  
  17.                               alert('Problem whith POST!');//тут ты пишешь часть скрипта которая будет выполняться есть по каким-нибудь причинам запрос не был отправлен  
  18.  
  19.                         }
  20.  
  21.                 });
  22. });


some.php
PHP:
скопировать код в буфер обмена
  1. if(!empty($_POST['id']) && !empty($_POST['data']))
  2. {
  3. echo 'Script resiev '.$_POST['id'].' whith text: "'.$_POST['data'].'"';
  4. }
  5. else
  6. {
  7. echo 'Post was empty!';
  8. }
2. Viper - 24 Марта, 2011 - 15:25:47 - перейти к сообщению
LEONeso в вашем приемер ответ от сервера вы получаете в формате json после eval обращаетесь к нему как к обычному массиву(оно у вас в переменной rst)
т.е. от сервера получаем строку вида
CODE (htmlphp):
скопировать код в буфер обмена
  1. {"id":"val","id1":"val1"}

после преобразований обращаемся к элементам как
rst.id и т.д.

да и вместо этого
PHP:
скопировать код в буфер обмена
  1. echo '{'.join(", ", $array).'}';
используйте
PHP:
скопировать код в буфер обмена
  1. $json = json_encode(array("id"=>"val"));
  2. echo $json;
3. LEONeso - 24 Марта, 2011 - 15:31:08 - перейти к сообщению
Viper, я записывал оба примера в index.php при нажатии по ссылке, результата ноль. Хочу сделать модальное окно, которое бы открывалось и в неё инклайдилась работа php скрипта.
4. vsll - 24 Марта, 2011 - 15:34:12 - перейти к сообщению
Вот здесь неплохо написано про prototype
http://blog[dot]joshschumacher[dot]com/2[dot][dot][dot]type-js-and-php/
и на русском документация
http://prototype-js[dot]net/
5. LEONeso - 24 Марта, 2011 - 15:54:05 - перейти к сообщению
Vasiliya, есть смысл прописывать 2 библиотеки, а потом еще десяток при использовании разных примеров из разных библиотек?

Я просто показал, что я нашел, конечно желателен пример работающий с помощью jQuery т.к. библиотека популярная.

Второй вариант вывода результата работы php скрипта, вроде бы работает с jQuery, но я до сих пор не могу понять, почему он не работает.

Нашел рабочий пример: на jQuery инклайдит php файлы.
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; Charset=UTF-8">
  5. <script type="text/javascript" src="jquery.js"></script>
  6. </head>
  7.  
  8. <body>
  9.        
  10.         <p>Какую страницу желаете открыть?</p>
  11.         <form>
  12.                 <input id="btn1" type="button" value="Страница 1"> <input id="btn2" type="button" value="Страница 2">
  13.         </form>
  14.         <div id="content"></div>
  15.        
  16.         <script>
  17.                 $(document).ready(function(){
  18.                
  19.                         $('#btn1').click(function(){
  20.                                 $.ajax({
  21.                                         url: "page1.html",
  22.                                         cache: false,
  23.                                         success: function(html){
  24.                                                 $("#content").html(html);
  25.                                         }
  26.                                 });
  27.                         });
  28.                        
  29.                         $('#btn2').click(function(){
  30.                                 $.ajax({
  31.                                         url: "page2.html",
  32.                                         cache: false,
  33.                                         success: function(html){
  34.                                                 $("#content").html(html);
  35.                                         }
  36.                                 });
  37.                         });
  38.                        
  39.                 });
  40.         </script>
  41.        
  42. </body>
  43. </html>


От сюда вытекает вопрос, как передать 2 параметра (2 переменные/2 значения) для php скрипта?
6. Viper - 24 Марта, 2011 - 16:20:18 - перейти к сообщению
LEONeso http://api[dot]jquery[dot]com/ajax

есть параметр data
к примеру data: "var1=val1&var2=val2"
7. JustUserR - 24 Марта, 2011 - 17:52:09 - перейти к сообщению
LEONeso пишет:
Здравствуйте, подскажите, как вывести результат работы php скрипта (из отдельного файла) в действующий файл (index.php) с помощью AJAX ?
Для осуществления решенния предполагаемой задачи, заключающеся в проведении транспортировки информационного поля включающего инакпсулированную форму целевого декларационного элемента, для которого требуется осуществления внедрения в исполняемую клиентскую HTML-страницу, необходимо использование средств предшествующего упрвления и анализа соответственного информационного поля, производимого на повышенном уровне базового элементного трактования, на основании которого впосредствии обеспечивается генерация разделенных объектов на пониженном уровне базового элементного трактования

 

Powered by ExBB FM 1.0 RC1