AJAX запись в файл
<input name=\"input_text\" id=\"input_text\" type=\"text\" style=\"width: 165px;\">
Вводи текст потом нажимаем кнопку и тут текст исчез записался в файл и на этом все. чтобы текст передать - удалить с формы я могу а вот как записать на стороне сервера в файл это не могу понять почитал в гугле что можно данную функцию тока на AJAX сделать в котором я не разбираюсь хоть там и яваскрипты
кто знает линк де описано Даная функция или у кого есть код поделитесь пожалуйста
буду очень благодарен
$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
После того как ты отправил данные на сервер и там их достал из REQUEST используй функции fopen, fwrite и fclose для открытия файла, записи в него и закрытия файла.
shine абсолютно прав. AJAX работает только для связи текущей страницы и серверной строны. Ни чего писать он не может. А вот на серверной строне писать в файл может любой язык. Как то: PHP, Perl, ASP, JSP, Rubbi. Выбирай из них какой больше нравиться и читай соотвествущий раздел справочного руководсва.
Поговаривают что и для РНР однажды появится PHP-on-Rails... Хотя имхо не дождемся....
2. Есть много хороших фреймворков для РНР (Zend Framework, symfony, cakePHP и т.д.). Ну и для особо любознательных...
http://phponrails.ru/
http://www.symfony-project.com/
http://framework.zend.com
http://cakephp.org/
Это наиболее известные и обсуждаемые. Хотя имхо симфония для быстрого создания сайтов, зендовский для крупных и средних проектов проектов.
А phponrails, имхо, сейчас еще очень сырой проект.
var fso, tf;
fso = new ActiveXObject("Scripting.FileSystemObject");
tf = fso.CreateTextFile("c:\\testfile.txt", true);
tf.WriteLine("Testing 1, 2, 3.") ;
tf.Close();
}
Не в тему потому, что топикстартеру нужно писать файлы на сервере (почитайте первый пост). Неправильно потому, что твоя функция будет работать только в IE. В других браузерах ActiveX не поддерживается.
А про браузер и никто не огаваривался
Запись вайл сделал спомощу библиотеки http://dklab.ru/lib/JsHttpRequest/
В принципе понял всю суть AJAX и нечего сложного нету. НО есть маленький вопросик:
Вот пытаюсь углубится в разработку приложений на AJAX.
Но столкнулся с проблемой передачи данных в пхп скрипт.
После создания XMLHttpRequest получить данные с пхп скрипта нет проблем вот с передачей ему данных для обработки возникают проблемы
Если мы хотим передать какие-то параметры например голосование то это можно сделать так:
req.send(null);
и в файле file.php выбрать $_GET[‘param’] значением чего будет 1.
Ну а Ели нам нужно передать текст на русском та еще очень объемный, обем которого превышает максимальную длину GET запроса как быть в этом случаи.
req.open("POST", "scriptname", true);
req.send("param=1");
index.php
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 onclick="ajax('savetext.php');" value="GET">
</table>
</form>
savetext.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 не передалась
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");
У меня такое давно работает
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");
У меня такое давно работает
спасибо заработало ))
начебто все правельно. в чем может быть проблема ??
При посылке POST данных так же необходимо посылать "Content-Type" заголоков в форме "application/x-www-form-urlencoded; charset=кодировка". Просто при разработке обычных HTML страниц это не замечаешь, браузер автоматически формирует подобных заголовки. При разработке AJAX прихожений уже приходиться о таких вещах думать самому. К примеру если захочешь переслать файл, то придется слать "multipart/form-data" заголовок.
Поэтому если что-то не работает, то рекомендую посмотреть, что же в подобном случае посылает браузер на сервер (лично сам юзаю вот этот плагин к FifeFox http://livehttpheaders.mozdev.org/ ) и добавить эти заголовки в логику своего приложения.
вот при попытке передать русский текст "что с этим сделать" получает "что СЃ этим сделать"
вот что выдает этот плагин
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>вапвап</b>: wвапвап
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
подскажите как исправить кодировку буду очень благодарен
Вот версия твоего файла с и зменениями
savetext.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";
?>
вот при попытке передать русский текст "что с этим сделать" получает "что СЃ этим сделать"
вот что выдает этот плагин
Все верно народ говорит, тут уже дело не в заголовках, а в виде самих данных. С клиента данные с русскими буквами нужно кодировать, через тот же encodeURIComponent.
подскажи как закодировать
req.send("param=тест данных");
подскажи как закодировать
req.send("param=тест данных");
param = 'param='+encodeURIComponent("тест данных");
req.send(param);
[color="#f5f5ff"]это было в ответ на:[/COLOR]
наверное привёл мои цитаты в качестве укора мне.
Но данные закодированные по его способу тоже бы пришлось раскодировать ...