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.SU » Клиентская разработка » JavaScript & VBScript » ищу простой пример ajax

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

1. ezha - 19 Ноября, 2010 - 12:44:23 - перейти к сообщению
замучился уже искать, где скачать маленький, без наворотов, РАБОЧИЙ пример ajax+php+mysql без подключения сторонних библиотек типа jquery, просто нужно передать парочку полей из формы, без перезагрузки страницы, но везде чего-то не хватает, везде надо дописывать, додумывать, а хотелось бы разбираться на готовом примере
2. Uchkuma - 19 Ноября, 2010 - 13:04:30 - перейти к сообщению
Самый маленький ajax без jquery здесь кроссбраузерный AJAX.
3. JustUserR - 19 Ноября, 2010 - 19:36:02 - перейти к сообщению
ezha пишет:
Просто нужно передать парочку полей из формы, без перезагрузки страницы
Оптимальным вариантом для обеспечения динамической передачи информационный полей из заполняемой пользователем формы в статической HTML-странице - является использование управляющего JS-кода и транспортного Iframe-элемента для обеспечения непосредственного запроса к целевому ресурсу При использовании такой схемы осуществление запроса осуществляется автоматически при указание target-аттрибута у исходной формы - в то время как возможности JS-скриптинга используются для определительной обработки событий загрузки iframe-элемента
4. koras - 20 Ноября, 2010 - 01:16:11 - перейти к сообщению
Вы бы сперва узнали что такое php и mysql, потом брались за ajax и JS
5. Ammy - 20 Ноября, 2010 - 07:03:29 - перейти к сообщению
JS: XMLHttpRequest, eval('('+json+')'), PHP: json_encode(array)

Простенький пример:

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2.  
  3. // Кроссбраузерное получение объекта для осуществления запросов
  4.  
  5. function getXmlHttp(){
  6.   var xmlhttp;
  7.   try {
  8.     xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  9.   } catch (e) {
  10.     try {
  11.       xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  12.     } catch (E) {
  13.       xmlhttp = false;
  14.     }
  15.   }
  16.   if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
  17.     xmlhttp = new XMLHttpRequest();
  18.   }
  19.   return xmlhttp;
  20. }
  21.  
  22. var request = getXmlHttp();
  23. request.open('GET', 'script.php?params=' + encodeURIComponent('myparam'), true);
  24. request.onreadystatechange = function() {
  25.   if (request.readyState == 4) {
  26.      if(request.status == 200) {
  27.  
  28.        var response = eval('(' + request.responseText + ')');
  29.  
  30.        alert(response.data);
  31.  
  32.       }
  33.   }
  34. };
  35. xmlhttp.send(null);
  36.  
  37.  


// Серверная сторона, получение данных, обработка, создание ответа (вывод, например, в json)

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. $params = $_GET['params'];
  4.  
  5. //.... какие-либо действия с данными
  6.  
  7. echo '{ data: "Hello from PHP.SU" }';
  8.  
  9.  
  10.  
  11.  
6. JustUserR - 20 Ноября, 2010 - 18:45:51 - перейти к сообщению
Ammy пишет:
eval('('+json+')'
Предложенный вами вариант решения может представлять значительную проблему с безопасностью размещенного ресурса - по причине отсутствия предварительной проверки целевого кода в расположении его на уровня представления строковой констаны - в общем случае обеспечение указанных действий возможно посредством использования функции parseJSON
7. Ammy - 21 Ноября, 2010 - 07:14:52 - перейти к сообщению
Цитата:
может представлять значительную проблему с безопасностью размещенного ресурса

А если серверная (доверенная) сторона генерирует правильный безошибочный (!evil) JSON ответ? И какие быстрые альтернативы (eval) существуют помимо проверки строковой константы с json регулярным выражением?

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2.  
  3. // javascript.ru
  4.  
  5. var my_JSON_object =
  6. !(/[^,:{}[]0-9.-+Eaeflnr-u nrt]/.test(data.replace(/"(.|[^"])*"/g, ''))) &&
  7. eval('(' + data + ')')
  8.  
  9.  


Кроме минималистичной альтернативы одному упомянотому вами методу из громоздкой библиотеки jQuery ничего более быстрого и безопасного я не вижу.. Посмотрите:
http://code[dot]google[dot]com/p/json-sans-eval/
Основано на http://www[dot]json[dot]org/js[dot]html

Очевидный плюс - простота использования, скромный размер minified:

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. var myJson = '{ "x": "Hello, World!", "y": [1, 2, 3] }';
  3. var myJsonObj = jsonParse(myJson);
  4. alert(myJsonObj.x);  // alerts Hello, World!
  5. for (var k in myJsonObj) {
  6.   // alerts x=Hello, World!  and  y=1,2,3
  7.   alert(k + '=' + myJsonObj[k]);
  8. }
  9.  




Цитата:
использования функции parseJSON

ezha пишет:
без наворотов, РАБОЧИЙ пример ajax+php+mysql без подключения сторонних библиотек типа jquery
8. JustUserR - 21 Ноября, 2010 - 21:13:07 - перейти к сообщению
Ammy пишет:
И какие быстрые альтернативы (eval) существуют помимо проверки строковой константы с json регулярным выражением?
Современные версии поставляемых версий популярных браузеров обеспечивают поддержку встроенной функциональности по разбору JSON-документов - осуществляемую посредством вызова функции parseJSON в проверкой правильности получаемого документа
9. DeepVarvar - 21 Ноября, 2010 - 21:48:18 - перейти к сообщению
JustUserR пишет:
Современные версии поставляемых версий популярных браузеров
а если это старый браузер? Кто будет думать о переносимости кода?
10. JustUserR - 22 Ноября, 2010 - 20:44:44 - перейти к сообщению
DeepVarvar пишет:
А если это старый браузер? Кто будет думать о переносимости кода?
Возможности клиентского программного обеспечения языка JS включают в себя представления встроенных и пользовательскх функциональных элементов как объектов первого рода - что обеспечивает возможность легкой проверки наличия существованя требуемой оптимизированной встроенной функции - и в случае ее отсутсвия выполнения собственного безопасного замещения Приведенный подход является широко употребимым - и применяется в частности во множестве framework-ов с выбором объекта
11. DeepVarvar - 23 Ноября, 2010 - 00:44:14 - перейти к сообщению
JustUserR фреймворк иногда является слишком тяжелым (со всеми своими проверками в том числе) для какого либо интерфейса с малым функционалом, поэтому в ситуации с выбором: "делать по новому или по старому" выбирать надо не сразу оба варианта и делать проверку какой из них нужно запустить, а просто сделать по старому, ведь это по сути оптимизация на скорость выполнения.

Ну а по поводу валидности AJAX-ответа сервера: а вы попробуйте неверно собранный объект отправить клиенту - у клиента ничего не произойдет, Просто в тех местах где должно что-то изменяться после ответа сервера - НИЧЕГО НЕ ИЗМЕНИТСЯ будто и запроса-ответа не было. Тогда зачем вообще парсить на наличие/отсутствие ошибок AJAX-ответ на стороне клиента всякими приблудами и регулярками?

Так не проще:
Сервер ответит с дополнительным "полем": {200:"Ok"}
После ответа сервера делаем eval() и if (myObject.200 == '') { alert("От сервера был получен неверный JSON-формат!!!"); resend(); }
12. unsleepy999 - 23 Ноября, 2010 - 09:48:39 - перейти к сообщению
Простой и понятный пример работы Ajax.
комментарии в каждой строке.
Ajax+PHP+MySQL
качать тут:
www[dot]plati[dot]ru/asp/pay[dot]asp?idd=1040991
13. DlTA - 23 Ноября, 2010 - 17:08:05 - перейти к сообщению
unsleepy999, Вы разделом ошиблись.
14. JustUserR - 23 Ноября, 2010 - 20:38:57 - перейти к сообщению
DeepVarvar пишет:
Выбирать надо не сразу оба варианта и делать проверку какой из них нужно запустить, а просто сделать по старому, ведь это по сути оптимизация на скорость выполнения
Процесс определения выбираемой весри функциональности совместимой с заданным программным обеспечением пользователя является одиночной линейной проверкой для которой не обепеичвается возможная вычислительная развертка - в то время как осуществление выбора целевой обрабатывающей функции может в значительной мере оказывать влияение на безопасность и вычислительную эффективность - поскольку принимаемые ей компоненты являются информацонные поля вариацинного размера
15. DeepVarvar - 27 Ноября, 2010 - 09:18:30 - перейти к сообщению
JustUserR пишет:
одиночной линейной проверкой для которой не обепеичвается возможная вычислительная развертка

По вашему:
Передаем клиенту 2 варианта клиентских скриптов (новый и старый) - выросло время загрузки страницы.
Узнаем что это за браузер, если новый пихаем проверку "по новому" - если старый пихаем по старому.
Работаем... причем всеравно после ваших двух проверок eval делать...

По моему:
Делаем eval и всего одну проверку удачи/неудачи создания обьекта!!!
Работаем...

О каких линейных проверках без развертки речь идет??? Скорее всего в моем случае та же самая "фишка" и работает, только действий меньше )))

 

Powered by ExBB FM 1.0 RC1