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. Стас - 16 Мая, 2007 - 19:22:29 - перейти к сообщению
Научите хоть чему-нить Закатив глазки
Вот к примеру: вводят в поле логин, а внизу отображается, занят он или нет. Запросы к БД я сам сделаю, какой JS и XML нужен скажите...
2. UserID - 16 Мая, 2007 - 23:31:55 - перейти к сообщению
XML здесь совсем не нужен.

Вот что я намутил:
PHP:
скопировать код в буфер обмена
  1.  
  2. // Ajax class api
  3. function mycms_ajax()
  4. {
  5.     var AJAX_OBJECT = new Array("Msxml2.XMLHTTP", "Microsoft.XMLHTTP");
  6.     var AJAX_METHOD = null;
  7.     var AJAX_SCRIPT = null;
  8.     var AJAX_HANDLE = false;
  9.    
  10.     // First initialization
  11.     this.ajax = function(method, script)
  12.     {
  13.         // Check for browser platform
  14.         if(window.ActiveXObject)
  15.         {
  16.             for(var i = 0; i < AJAX_OBJECT.length; i++)
  17.             {
  18.                 try {
  19.                     // If Internet Explorer
  20.                     AJAX_HANDLE = new ActiveXObject( AJAX_OBJECT[i] );
  21.                 } catch(e) {}
  22.             }
  23.         }
  24.         else if(window.XMLHttpRequest)
  25.         {
  26.             // If Mozilla, Opera, Safari
  27.             AJAX_HANDLE = new XMLHttpRequest();
  28.         }
  29.        
  30.         // If ajax installed, return hash
  31.         if(AJAX_HANDLE) {
  32.             this.hash = {
  33.                 AJAX_METHOD : method,
  34.                 AJAX_SCRIPT : script,
  35.                 AJAX_HANDLE : AJAX_HANDLE
  36.             };
  37.         } else {
  38.             alert("MyCMS System : No ajax installed. Too old browser.");
  39.         }
  40.         return this.hash;
  41.     }
  42.    
  43.    
  44.     AJAX_HANDLE = this.ajax;
  45.    
  46.     this.callback = function(data)
  47.     {
  48.         if(AJAX_HANDLE)
  49.         {
  50.             if(this.hash.AJAX_METHOD == "POST")
  51.             {
  52.                 with(this.hash) {
  53.                     AJAX_HANDLE.open("POST", AJAX_SCRIPT, true);
  54.                    
  55.                     AJAX_HANDLE.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  56.                  
  57.                    
  58.                     AJAX_HANDLE.onreadystatechange = this.mycms_informer;
  59.                     AJAX_HANDLE.send(data);
  60.                 }
  61.             }
  62.            
  63.             if(this.hash.AJAX_METHOD == "GET")
  64.             {
  65.                 with(this.hash) {
  66.                     AJAX_HANDLE.open("GET", AJAX_SCRIPT, true);
  67.                     AJAX_HANDLE.onreadystatechange = this.mycms_informer;
  68.                     AJAX_HANDLE.send(null);
  69.                 }
  70.             }
  71.         }
  72.     }
  73.    
  74.     this.mycms_informer = function()
  75.     {
  76.         if (AJAX_HANDLE.readyState == 4)
  77.         if (AJAX_HANDLE.status == 200)
  78.             alert("Server is done!");
  79.         else if (AJAX_HANDLE.status == 404)
  80.             alert("Request URL does not exist");
  81.         else
  82.             alert("Error: status code is " + AJAX_HANDLE.status);
  83.     }
  84. }
  85.  


Это эдакий псевдокласс интерфейса Ajax. Работает через POST и GET, единственное, что для русского языка нужно ещё строить массив соответствия кириллицы значениям из rfc. Что-то вроде этого:

PHP:
скопировать код в буфер обмена
  1.  
  2. function utf8_win($s)
  3. {
  4.     $s = str_replace("xD0xB0", "а", $s);  $s = str_replace("xD0x90", "А", $s);
  5.     $s = str_replace("xD0xB1", "б", $s);  $s = str_replace("xD0x91", "Б", $s);
  6.     $s = str_replace("xD0xB2", "в", $s);  $s = str_replace("xD0x92", "В", $s);
  7.     $s = str_replace("xD0xB3", "г", $s);  $s = str_replace("xD0x93", "Г", $s);
  8.     $s = str_replace("xD0xB4", "д", $s);  $s = str_replace("xD0x94", "Д", $s);
  9.     $s = str_replace("xD0xB5", "е", $s);  $s = str_replace("xD0x95", "Е", $s);
  10.     $s = str_replace("xD1x91", "ё", $s);  $s = str_replace("xD0x81", "Ё", $s);
  11.     $s = str_replace("xD0xB6", "ж", $s);  $s = str_replace("xD0x96", "Ж", $s);
  12.     $s = str_replace("xD0xB7", "з", $s);  $s = str_replace("xD0x97", "З", $s);
  13.     $s = str_replace("xD0xB8", "и", $s);  $s = str_replace("xD0x98", "И", $s);
  14.     $s = str_replace("xD0xB9", "й", $s);  $s = str_replace("xD0x99", "Й", $s);
  15.     $s = str_replace("xD0xBA", "к", $s);  $s = str_replace("xD0x9A", "К", $s);
  16.     $s = str_replace("xD0xBB", "л", $s);  $s = str_replace("xD0x9B", "Л", $s);
  17.     $s = str_replace("xD0xBC", "м", $s);  $s = str_replace("xD0x9C", "М", $s);
  18.     $s = str_replace("xD0xBD", "н", $s);  $s = str_replace("xD0x9D", "Н", $s);
  19.     $s = str_replace("xD0xBE", "о", $s);  $s = str_replace("xD0x9E", "О", $s);
  20.     $s = str_replace("xD0xBF", "п", $s);  $s = str_replace("xD0x9F", "П", $s);
  21.     $s = str_replace("xD1x80", "р", $s);  $s = str_replace("xD0xA0", "Р", $s);
  22.     $s = str_replace("xD1x81", "с", $s);  $s = str_replace("xD0xA1", "С", $s);
  23.     $s = str_replace("xD1x82", "т", $s);  $s = str_replace("xD0xA2", "Т", $s);
  24.     $s = str_replace("xD1x83", "у", $s);  $s = str_replace("xD0xA3", "У", $s);
  25.     $s = str_replace("xD1x84", "ф", $s);  $s = str_replace("xD0xA4", "Ф", $s);
  26.     $s = str_replace("xD1x85", "х", $s);  $s = str_replace("xD0xA5", "Х", $s);
  27.     $s = str_replace("xD1x86", "ц", $s);  $s = str_replace("xD0xA6", "Ц", $s);
  28.     $s = str_replace("xD1x87", "ч", $s);  $s = str_replace("xD0xA7", "Ч", $s);
  29.     $s = str_replace("xD1x88", "ш", $s);  $s = str_replace("xD0xA8", "Ш", $s);
  30.     $s = str_replace("xD1x89", "щ", $s);  $s = str_replace("xD0xA9", "Щ", $s);
  31.     $s = str_replace("xD1x8A", "ъ", $s);  $s = str_replace("xD0xAA", "Ъ", $s);
  32.     $s = str_replace("xD1x8B", "ы", $s);  $s = str_replace("xD0xAB", "Ы", $s);
  33.     $s = str_replace("xD1x8C", "ь", $s);  $s = str_replace("xD0xAC", "Ь", $s);
  34.     $s = str_replace("xD1x8D", "э", $s);  $s = str_replace("xD0xAD", "Э", $s);
  35.     $s = str_replace("xD1x8E", "ю", $s);  $s = str_replace("xD0xAE", "Ю", $s);
  36.     $s = str_replace("xD1x8F", "я", $s);  $s = str_replace("xD0xAF", "Я", $s);
  37.     return $s;
  38. }
  39.  
  40.  


Затем, к примеру обработаем нажатие кнопки:
PHP:
скопировать код в буфер обмена
  1.  
  2. function goaja()
  3. {
  4.     var ajax = new mycms_ajax();
  5.     ajax.ajax("POST", "./path.php");
  6.     ajax.callback("test=" +  document.all["test"].value);
  7.     delete ajax;
  8.     return false;
  9. }
  10.  



А сам php-скрипт под это дело:
PHP:
скопировать код в буфер обмена
  1.  
  2. $ptr = fopen("data.dat", "w");
  3. fwrite($ptr, utf8_win($_POST['test']));
  4. fclose($ptr);
  5.  


Пример для GET-запроса:
PHP:
скопировать код в буфер обмена
  1.  
  2. function goaja()
  3. {
  4.     var ajax = new mycms_ajax();
  5.     ajax.ajax("GET", "./path.php?test=" +  document.all["test"].value);
  6.     ajax.callback(null);
  7.     delete ajax;
  8.     return false;
  9. }
  10.  


В работы с XML-документом нет ничего сложного. Советую прочитать здесь:

http://www[dot]xml[dot]com/pub/a/2005/02[dot][dot][dot]ttp-request[dot]html
http://www[dot]xml[dot]com/pub/a/2005/05[dot][dot][dot]/ajax-error[dot]html

EULA: Приведённые здесь скрипты предназначены для ознакомления. Использование их в своих работах подразумевает предварительное изучение и глубокое понимание все написанных здесь скриптов. Если что-то будет непонятно, то в ближайшем будущем я изложу своё понимание работы с AJAX в разделе Пользовательских функций для Javascript. И на будущее, это форум прежде всего для решения каких-то проблем работы скриптов, а не вопросов типа расскажите или научите. В будущем, думаю, на вопросы подобного рода будет просто большими буквами написано RTFM, ато обидно немного получается, что я и многие люди здесь ночами не спят и что-то пытаются изучить и понять, а другие просто спрашивают, не пытаясь разобраться в этом самим. :umnik:
3. Стас - 17 Мая, 2007 - 08:39:42 - перейти к сообщению
А под какой переменной в PHP скрипте искать то, что передал JS через POST?
4. UserID - 17 Мая, 2007 - 09:12:33 - перейти к сообщению
Будь повнимательнее:

PHP:
скопировать код в буфер обмена
  1.  
  2. $ptr = fopen("data.dat", "w");
  3. fwrite($ptr, utf8_win($_POST['test']));
  4. fclose($ptr);
  5.  


$_POST['test'] - имя твоей переменной.
5. kuzya - 13 Июня, 2007 - 21:09:30 - перейти к сообщению
Не по теме канешн, но оч интересно: если я например работаю с windows-1251 то мне так же нужно будет пользоваться чем либо похожим на функцию utf8_win($s) описанную выше?
6. UserID - 13 Июня, 2007 - 22:12:51 - перейти к сообщению
kuzya пишет:
Не по теме канешн, но оч интересно: если я например работаю с windows-1251 то мне так же нужно будет пользоваться чем либо похожим на функцию utf8_win($s) описанную выше?


Не с чем либо похожим, а именно с этим.
7. kuzya - 14 Июня, 2007 - 11:29:08 - перейти к сообщению
Спс =)
8. kamikadze - 21 Июля, 2007 - 18:35:20 - перейти к сообщению
UserID пишет:
Будь повнимательнее:

PHP:
скопировать код в буфер обмена
  1.  
  2. $ptr = fopen("data.dat", "w");
  3. fwrite($ptr, utf8_win($_POST['test']));
  4. fclose($ptr);
  5.  


$_POST['test'] - имя твоей переменной.


Если я не ошибаюсь то всё сдесь вышеописанное просто посылает значение переменнной скрипту через Аякс и запиывает, а что делать в случае если нам надо еще и вывести свободен ли такой логин, за PHP скриптом дело не постоит а как ьыть с выводом???
9. valenok - 30 Июля, 2007 - 11:37:51 - перейти к сообщению
http://www[dot]ibm[dot]com/developerwork[dot][dot][dot]y/wa-ajaxintro1/
http://www[dot]ibm[dot]com/developerwork[dot][dot][dot]y/wa-ajaxintro2/
http://www[dot]ibm[dot]com/developerwork[dot][dot][dot]y/wa-ajaxintro3/
http://www[dot]ibm[dot]com/developerwork[dot][dot][dot]y/wa-ajaxintro4/
http://www[dot]ibm[dot]com/developerwork[dot][dot][dot]y/wa-ajaxintro5/
http://www[dot]ibm[dot]com/developerwork[dot][dot][dot]y/wa-ajaxintro6/
http://www[dot]ibm[dot]com/developerwork[dot][dot][dot]y/wa-ajaxintro7/
10. UserID - 30 Июля, 2007 - 14:26:10 - перейти к сообщению
valenok
Молодец, однозначный ответ.
11. toturvator - 30 Июля, 2007 - 16:31:40 - перейти к сообщению
А эта технология позволяет управлять элементами формы страницы загружаемой с "чужого" сайта в своем фрейме? Т.е. фрейм мой - он хозяин загружаемого в себя контента, а значит по логике все порождаемые в нем элементы управляемы. Я не ошибаюсь?
12. UserID - 30 Июля, 2007 - 17:28:17 - перейти к сообщению
toturvator
Теоретически можно, но нужно ли?
13. toturvator - 30 Июля, 2007 - 19:02:40 - перейти к сообщению
ОЧЕНЬ!!! Улыбка У меня где то пост здесь со смежной задачей. ;)
14. UserID - 02 Августа, 2007 - 13:01:10 - перейти к сообщению
toturvator
Это что-то на счёт блокировки содержимого сайта?
15. toturvator - 02 Августа, 2007 - 13:46:19 - перейти к сообщению
Угу. Не понял

 

Powered by ExBB FM 1.0 RC1