Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

AJAX запись в файл

477
19 февраля 2007 года
Robinnovich
182 / / 02.12.2006
Здравствуйте уважаемые вот есть такой вопросик как сделать AJAX запись в файл, чтобы страничка не перезагружалась тоесть в поле
<input name=\"input_text\" id=\"input_text\" type=\"text\" style=\"width: 165px;\">
Вводи текст потом нажимаем кнопку и тут текст исчез записался в файл и на этом все. чтобы текст передать - удалить с формы я могу а вот как записать на стороне сервера в файл это не могу понять почитал в гугле что можно данную функцию тока на AJAX сделать в котором я не разбираюсь хоть там и яваскрипты


кто знает линк де описано Даная функция или у кого есть код поделитесь пожалуйста

буду очень благодарен
7.3K
20 февраля 2007 года
JB13
64 / / 05.09.2005
Чтобы записать в файл, например на php нужно сделать, что-то вроде этого (самый простой вариант).
 
Код:
$input_text = $_GET['input_text']; //или $_POST['input_text'] если передается через $_POST
$fp = fopen('имя_файла_на_сервере', 'a'); //a - для добавления в конец или w для перезаписи
fwrite($fp, $input_text);
fclose($fp);


чтобы сделать, что-то посложнее, соответственно нужно знать больше по php. Про работу с файлами можно почитать здесь http://ru2.php.net/manual/ru/ref.filesystem.php

Если хочешь сделать это используя AJAX, то нужно использовать объект XMLHttpRequest. Про него на форуме уже много говорилось. Описание можно посмотреть, например, здесь http://msdn.microsoft.com/workshop/author/dhtml/reference/objects/obj_xmlhttprequest.asp
337
20 февраля 2007 года
shine
719 / / 09.06.2006
AJAX ничего не пишет в файл. Он создан и работает не для этого.

После того как ты отправил данные на сервер и там их достал из REQUEST используй функции fopen, fwrite и fclose для открытия файла, записи в него и закрытия файла.
12
21 февраля 2007 года
alekciy
3.0K / / 13.12.2005
Цитата: Robinnovich
а вот как записать на стороне сервера в файл это не могу понять почитал в гугле что можно данную функцию тока на AJAX сделать в котором я не разбираюсь хоть там и яваскрипты


shine абсолютно прав. AJAX работает только для связи текущей страницы и серверной строны. Ни чего писать он не может. А вот на серверной строне писать в файл может любой язык. Как то: PHP, Perl, ASP, JSP, Rubbi. Выбирай из них какой больше нравиться и читай соотвествущий раздел справочного руководсва.

13
21 февраля 2007 года
RussianSpy
3.0K / / 04.07.2006
Буду занудой: язык называется Ruby. Гораздо чаще используют Ruby-on-Rails - некий набор фреймворков, библиотек и т.д.

Поговаривают что и для РНР однажды появится PHP-on-Rails... Хотя имхо не дождемся....
15
23 февраля 2007 года
shaelf
2.7K / / 04.05.2005
Не "появится", а появился. Это раз)
2. Есть много хороших фреймворков для РНР (Zend Framework, symfony, cakePHP и т.д.). Ну и для особо любознательных...
http://phponrails.ru/
http://www.symfony-project.com/
http://framework.zend.com
http://cakephp.org/
Это наиболее известные и обсуждаемые. Хотя имхо симфония для быстрого создания сайтов, зендовский для крупных и средних проектов проектов.
337
23 февраля 2007 года
shine
719 / / 09.06.2006
Вот краткая таблица по сравнению фрейморков: http://www.phpit.net/demo/framework%20comparison/chart.php
А phponrails, имхо, сейчас еще очень сырой проект.
256
23 февраля 2007 года
foxweb
1.0K / / 27.07.2005
эхх, вот напишу диплом по Ajax... будете знать =)
347
24 февраля 2007 года
Maniak
319 / / 05.11.2005
вроде нужно просто JS использовать:
 
Код:
function CreateFile(){
  var fso, tf;
  fso = new ActiveXObject("Scripting.FileSystemObject");
  tf = fso.CreateTextFile("c:\\testfile.txt", true);
  tf.WriteLine("Testing 1, 2, 3.") ;
  tf.Close();
}
337
24 февраля 2007 года
shine
719 / / 09.06.2006
Maniak, и не в тему, и неправильно.
Не в тему потому, что топикстартеру нужно писать файлы на сервере (почитайте первый пост). Неправильно потому, что твоя функция будет работать только в IE. В других браузерах ActiveX не поддерживается.
347
24 февраля 2007 года
Maniak
319 / / 05.11.2005
создание файла на стороне сервера с помощью JS это что то из раздела фантастики...
А про браузер и никто не огаваривался
477
25 февраля 2007 года
Robinnovich
182 / / 02.12.2006
Здравствуйте уважаемые.
Запись вайл сделал спомощу библиотеки http://dklab.ru/lib/JsHttpRequest/

В принципе понял всю суть AJAX и нечего сложного нету. НО есть маленький вопросик:

Вот пытаюсь углубится в разработку приложений на AJAX.
Но столкнулся с проблемой передачи данных в пхп скрипт.
После создания XMLHttpRequest получить данные с пхп скрипта нет проблем вот с передачей ему данных для обработки возникают проблемы
Если мы хотим передать какие-то параметры например голосование то это можно сделать так:
Цитата:
req.open("GET", ”file.php?param=1&#8221;, true);
req.send(null);


и в файле file.php выбрать $_GET[‘param’] значением чего будет 1.
Ну а Ели нам нужно передать текст на русском та еще очень объемный, обем которого превышает максимальную длину GET запроса как быть в этом случаи.

345
25 февраля 2007 года
vadim_k
312 / / 01.08.2006
Нужно использовать POST

req.open("POST", "scriptname", true);
req.send("param=1");
477
25 февраля 2007 года
Robinnovich
182 / / 02.12.2006
таким образом можно передать n-е количество текста без ограничений ??
477
25 февраля 2007 года
Robinnovich
182 / / 02.12.2006
проверил почему-то не работает

index.php
Код:
<script type="text/javascript" language="JavaScript">
var req;
function ajax(url) {

    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
        req.onreadystatechange = processReqChange;
        req.open("POST", url, true);
        req.send("param=1");
    } else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
            req.onreadystatechange = processReqChange;
            req.open("POST", url, true);
            req.send("param=1");
        }
    }
}

function processReqChange() {
    ab = window.setTimeout("req.abort();", 5000);
    if (req.readyState == 4) {
        clearTimeout(ab);
        if (req.status == 200) {
            document.form1.response.value=req.responseText;
        } else {
            alert("Не удалось получить данные:\n" + req.statusText);
        }
    }
}
</script>
<form name=form1>
<table width=100% style="font-size: 100%">
      <tr>
      <td><textarea rows=6 name=response></textarea>
      <tr>
      <td><input type=text name=getparams value="?"><input type=button &#111;&#110;click="ajax('savetext.php');" value="GET">
</table>
</form>


savetext.php
 
Код:
<?php
header("Content-type: text/plain; charset=windows-1251");
header("Cache-Control: no-store, no-cache, must-revalidate");
$tmp = $_POST['param'];
echo $tmp." "."eto XMLHttpRequest";
?>


начебто все правельно. в чем может быть проблема ??

результат: eto XMLHttpRequest тоесть param 1 не передалась
345
25 февраля 2007 года
vadim_k
312 / / 01.08.2006
Попробуй заменить

req.onreadystatechange = processReqChange;
req.open("POST", url, true);
req.send("param=1");

на

req.open("POST", url, true);
req.setRequestHeader("Method", "POST " + url + " HTTP/1.1");
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
req.onreadystatechange = processReqChange;
req.send("param=1");

У меня такое давно работает
477
25 февраля 2007 года
Robinnovich
182 / / 02.12.2006
Цитата: vadim_k
Попробуй заменить

req.onreadystatechange = processReqChange;
req.open("POST", url, true);
req.send("param=1");

на

req.open("POST", url, true);
req.setRequestHeader("Method", "POST " + url + " HTTP/1.1");
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
req.onreadystatechange = processReqChange;
req.send("param=1");

У меня такое давно работает



спасибо заработало ))

12
25 февраля 2007 года
alekciy
3.0K / / 13.12.2005
Цитата: Robinnovich

начебто все правельно. в чем может быть проблема ??


При посылке POST данных так же необходимо посылать "Content-Type" заголоков в форме "application/x-www-form-urlencoded; charset=кодировка". Просто при разработке обычных HTML страниц это не замечаешь, браузер автоматически формирует подобных заголовки. При разработке AJAX прихожений уже приходиться о таких вещах думать самому. К примеру если захочешь переслать файл, то придется слать "multipart/form-data" заголовок.

Поэтому если что-то не работает, то рекомендую посмотреть, что же в подобном случае посылает браузер на сервер (лично сам юзаю вот этот плагин к FifeFox http://livehttpheaders.mozdev.org/ ) и добавить эти заголовки в логику своего приложения.

477
25 февраля 2007 года
Robinnovich
182 / / 02.12.2006
alekciy если не тяжело можете 1 раз на моем примере объяснить чтобы в дальнейшем не возникало лишних вопросов
вот при попытке передать русский текст "что с этим сделать" получает "С&#8225;то СЃ этим СЃРґР&#181;Р&#187;Р&#176;ть"

вот что выдает этот плагин
Цитата:
http://robin/mini-chat/chat.php?txt=save

POST /mini-chat/chat.php?txt=save HTTP/1.1
Host: robin
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Method: POST mini-chat/chat.php?txt=save HTTP/1.1
Content-Type: application/x-www-form-urlencoded; charset=windows-1251
Content-Length: 40
Cookie: PHPSESSID=6567bd061af62d3ac36618aee1df2da1
Pragma: no-cache
Cache-Control: no-cache
param=<b>РІР&#176;РїРІР&#176;Рї</b>: wРІР&#176;РїРІР&#176;Рї
HTTP/1.x 200 OK
Date: Sun, 25 Feb 2007 11:09:04 GMT
Server: Apache/2.0.54 (Win32) PHP/5.2.0
X-Powered-By: PHP/5.2.0
Cache-Control: no-store, no-cache, must-revalidate
Content-Length: 0
Keep-Alive: timeout=15, max=95
Connection: Keep-Alive
Content-Type: text/html
----------------------------------------------------------



вот 3 файла с которыми я работаю
http://193.108.249.218/index.php.txt
http://193.108.249.218/mini-chat/chat.js.txt
http://193.108.249.218/mini-chat/chat.php.txt

подскажите как исправить кодировку буду очень благодарен

345
25 февраля 2007 года
vadim_k
312 / / 01.08.2006
нужно перекодировать русские буквы
Вот версия твоего файла с и зменениями
savetext.php
Код:
<?php
header("Content-type: text/plain; charset=windows-1251");
header("Cache-Control: no-store, no-cache, must-revalidate");
define('Encoding','windows-1251');
function utf8decode($str,$encode=Encoding)
{
return iconv('UTF-8',$encode,$str);
}

$tmp = $_POST['param'];
echo utf8decode($tmp)." "."eto XMLHttpRequest";
?>
477
25 февраля 2007 года
Robinnovich
182 / / 02.12.2006
vadim_k спасибо, а я все это время с кодировками седел игрался ))
12
25 февраля 2007 года
alekciy
3.0K / / 13.12.2005
Цитата: Robinnovich
alekciy если не тяжело можете 1 раз на моем примере объяснить чтобы в дальнейшем не возникало лишних вопросов
вот при попытке передать русский текст "что с этим сделать" получает "С&#8225;то СЃ этим СЃРґР&#181;Р&#187;Р&#176;ть"

вот что выдает этот плагин


Все верно народ говорит, тут уже дело не в заголовках, а в виде самих данных. С клиента данные с русскими буквами нужно кодировать, через тот же encodeURIComponent.

345
25 февраля 2007 года
vadim_k
312 / / 01.08.2006
Уважаемый alekciy
подскажи как закодировать
req.send("param=тест данных");
12
25 февраля 2007 года
alekciy
3.0K / / 13.12.2005
Цитата: vadim_k
Уважаемый alekciy
подскажи как закодировать
req.send("param=тест данных");


param = 'param='+encodeURIComponent("тест данных");
req.send(param);

345
26 февраля 2007 года
vadim_k
312 / / 01.08.2006
У меня лично и без encodeURIComponent эти примерыработают также работают, (а вот без utf8decode никак) наверное они автоматически кодируются аа ???
12
26 февраля 2007 года
alekciy
3.0K / / 13.12.2005
Не знаю. Ведь ни браузер, ни библиотеку AJAX которую ты используешь, я не вижу ))
345
26 февраля 2007 года
vadim_k
312 / / 01.08.2006
Мои то библиотеки причём я про скрипты автора темы(у него кстати всёзаработало без encodeURIComponent)
477
07 марта 2007 года
Robinnovich
182 / / 02.12.2006
Да действительно все заработало )) только если я передаю русский текст на сервер то его декодирую с утф-8 в кодировку виндовс и заношу в базу если же со скрипта передаю обработанный русский текст назад то все гуд и декодировать не надо и вся библиотека содержится в посте 15, а вобще до этого думал что аякс что-то космическое и не постижимое, а оказалось что все просто. ))
12
07 марта 2007 года
alekciy
3.0K / / 13.12.2005
Цитата: vadim_k
Мои то библиотеки причём


[color="#f5f5ff"]это было в ответ на:[/COLOR]

Цитата:
наверное они автоматически кодируются аа ???

345
08 марта 2007 года
vadim_k
312 / / 01.08.2006
уважаемый Аlekciy
наверное привёл мои цитаты в качестве укора мне.
Но данные закодированные по его способу тоже бы пришлось раскодировать ...
12
08 марта 2007 года
alekciy
3.0K / / 13.12.2005
Зачем в укор? Ты написал "Мои то библиотеки причём", т.е. типа к чему это я написал в посте чуть выше про библиотеки и браузер. А это был просто ответ на вопрос "наверное они автоматически кодируются аа ???" не более того. Поэтому чуть ниже я и процитировал логику вопрос-ответ. Но видимо вопрос был риторическим ;) .
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог