Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Записать в файл, парамерт фунцкии в Jawascript (https://javascript.ru/forum/misc/36704-zapisat-v-fajjl-paramert-funckii-v-jawascript.html)

JohnChaban 25.03.2013 11:17

Записать в файл, парамерт фунцкии в Jawascript
 
Всем привет

Есть программный код
------------------------------------------------------------------------
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Документ Без Имени</title>
</head>
<body>
<script type="text/JavaScript">
function CreateFile()
{
var fso, tf;
fso = new ActiveXObject("Scripting.FileSystemObject");
tf = fso.CreateTextFile("c:\\testfile.txt", true);
// Вставка строки с переносом на новую.
tf.WriteLine('strochka') ;
// Вставка 3 пустых строк.
tf.WriteBlankLines(3) ;
// Вставка новой строки, без переноса.
tf.Write ("This is a test.");
tf.Close();
}
</script>
<input type="button" value="Первая кнопка" onClick="CreateFile()">
<input type="button" value="вторая кнопка" onClick="CreateFile()">
<input type="button" value="Третья кнопка" onClick="CreateFile()">
</body>
</html>
--------------------------------------------------------------
как сделать чтобы при нажатии на кнопку "Первая кнопка" записывалось в файл число например ("9"), при нажатии на вторую,затиралось бы первое число и писалось ("15"), при нажатии на третью кнопку ("256");
то есть как сделать чтобы функция CreateFile была со строковым параметром например (CreateFile(string)).
Вопрос 2 Почему не срабатывает данный скрипт в FireFox.
Спасибо.

SV0L0CH 25.03.2013 12:10

Цитата:

Сообщение от JohnChaban (Сообщение 242476)
Вопрос 2 Почему не срабатывает данный скрипт в FireFox.
Спасибо.

Очевидно потому что в FireFox нет ActiveXObject.

Ervin 25.03.2013 12:57

Можно использовать localstorage.
function createFile(str, repl) {
       var storage = (window.localStorage && window.localStorage.setItem) ? window.localStorage : null;
       
        if(storage) {
            if(!repl) {
               storage.setItem(storage.length + 1, str);
            }
            else {
               storage.setItem(storage.length, str);
            }
        }
   }


<input type="button" value="Первая кнопка" onClick="createFile(9)">
<input type="button" value="вторая кнопка" onClick="createFile(15)">
<input type="button" value="Третья кнопка" onClick="createFile(256)">

JohnChaban 25.03.2013 13:27

Мне нужно чтобы число было в файле я потом читать его другой программой буду
просто я не вижу в приведенном примере было видно что записывается в файл например 1.txt.
Я просто новичек в jawa пытаюсь понять.

Ervin 25.03.2013 13:42

Ну, тогда нужно java. С помощью JavaScript не получится писать фаилы на компьютер пользователя.

ILL-JAH 25.03.2013 14:38

можно в куки записать. Куки - это файл. Если конечно юзверь их не отключил.

Aetae 26.03.2013 12:06

В современных браузерах можно использовать Blob и вывести запрос на сохранение файла. Конкретно писать - не плучится.

JohnChaban 02.04.2013 14:53

Вопрос как можно сделать так чтобы функция Createfile(number) могла выполняться со стороны клиента?
Если я захожу на страничку с сервера то есть (у меня G-Server крутиться на машине я с той же машины через браузер на неё захожу то все работает так как надо).
Фунцкия не срабатывает если я захожу с клиентской машины. То есть я в ручную создал папку файл на клиентской машине но туда ничего не пишется.

animhotep 02.04.2013 15:12

повторю выше написанное
javascript не может писать в файлы

JohnChaban 03.04.2013 09:23

Молодой человек как же не может у меня пишет в файл числа
только на серверной машине на клиентской нет

megaupload 03.04.2013 10:13

Jawascript

Aetae 03.04.2013 10:15

Настроить параметры безопасности IE на клиенте: разрешить ActiveX и запись. Только вам внезапно может попасться в интернете сайт который ещё помнит такие штуки и убьёт комп.)

animhotep 03.04.2013 10:25

Цитата:

Сообщение от JohnChaban (Сообщение 244045)
Молодой человек как же не может у меня пишет в файл числа
только на серверной машине на клиентской нет

серверная реализация js типа nodeJS конечно же может а клиент НЕТ. ActiveX не в счёт

Aetae 03.04.2013 10:32

animhotep,
Ну одно время был предложен стандарт FileWriter и даже вроде был реализован в каком-то хроме...)

animhotep 03.04.2013 10:51

это же здоровенная дыра в безопасности, думаю не будет такого никогда

Aetae 04.04.2013 01:44

Цитата:

Сообщение от animhotep (Сообщение 244068)
это же здоровенная дыра в безопасности, думаю не будет такого никогда

Ну да - от него отказались.) Но хром же впереди планеты всей - всё подряд без раздумий реализует.)

JohnChaban 05.04.2013 11:43

Ребят я прошу прощения
Я подумал на досуге, надо в точности до наоборот.
Нужно чтобы клиент когда кнопку нажимал надо чтобы сервере писалось число в файл.
Можно ли это на jawascript сделать?

SV0L0CH 05.04.2013 12:11

а что такое jawascript?

Aetae 05.04.2013 12:17

Цитата:

Сообщение от JohnChaban (Сообщение 244361)
Ребят я прошу прощения
Я подумал на досуге, надо в точности до наоборот.
Нужно чтобы клиент когда кнопку нажимал надо чтобы сервере писалось число в файл.
Можно ли это на jawascript сделать?

На сервере нужен серверный язык. PHP например.

lamer 05.04.2013 20:50

Цитата:

Сообщение от JohnChaban (Сообщение 244361)
Ребят я прошу прощения
Я подумал на досуге, надо в точности до наоборот.
Нужно чтобы клиент когда кнопку нажимал надо чтобы сервере писалось число в файл.
Можно ли это на jawascript сделать?

Клиентская часть:

<html>

<head>
</head>

<body>
<input type="text" id="data" name="data">
<input type="button" value="setData" onclick="createFile();">

<script>
function createFile() {
	var setData = document.getElementById('data').value;
	var head = document.getElementsByTagName('head')[0];
	var script = document.createElement('script');
	script.type = 'text/javascript';
	script.src = 'http://domain/ini.php&data=' + setData;
	head.appendChild(script);
}
</script>
</body>

</html>

Пропиши в скрипте свой домен и создаешь файл на сервере ini.php в него код ниже.

Серверная часть:
<?php
$logfile = fopen('logi/logFile.txt', 'a');
fwrite($logfile, $_GET['data']."\r\n");
fclose($logfile);
?>


В корне домена создай папку logi поставь на неё права на запись drwxrwxrwx (777)

В итоге в инпуте пиши текст и кликай на бутон, данные отправятся на твой сервер и файл создастся в папке logi в файле logFile.txt

Это как я понял примерно то что тебе нужно, далее можно править под себя.

JohnChaban 10.04.2013 10:57

Если можно еще вопросик.
Поставил программу XAMPP.
Если кто работал с ней,подскажите пожалуйста где и в каком файле можно прописать серверную часть?
Спасибо.

animhotep 10.04.2013 15:56

XAMPP это вроде как веб сервер, на подобие денвера
файлы будут в C:/xampp/htdocs

JohnChaban 10.04.2013 16:03

Я пытаюсь разобраться просто
вот код
Серверная часть:
1 <?php
2 $logfile = fopen('logi/logFile.txt', 'a');
3 fwrite($logfile, $_GET['data']."\r\n");
4 fclose($logfile);
5 ?>

Я его сохраняю в .php файле и файл просто тупо кладу в эту папку?:

animhotep 10.04.2013 16:40

именно, сохрани это в файл C:/xampp/htdocs/test.php
в браузере набери http://localhost/test.php?data=qwe
если всё ок то в файле будет слово qwe

JohnChaban 11.04.2013 10:17

это понятно
не понятно вот что
Если у клиента на странице несколько кнопок Button1,Button2,Button3,Button4.................
Я открою небольшой секрет на самом деле я пытаюсь сделать тонкого клиента на LabVIEW. Что такое LabVIEW можно найти в интернете.
Если в нескольких словах то это графический язык программирования для создания промышленных приложений.
Смысл моей задачи в то что например, есть панель технологического прибора (осциллографа) и к этой панели доступ нужен через IE.
Но на панели осциллографа есть кнопки которые вызывают диалоговые окна. У нас была проблема такая что при нажатии на кнопку не вызвалось диалоговое окно у клиента то оно вызывалось на сервере.
Я решил попробовать использовать в работе HTML код. Сначала я научился делать чтобы просто страница обновлялась у клиента. Потом научился вызвать диалоговые окна посредством вызова HTML страницы.
Но возникла проблема на диалоговых окнах есть элемент TAB он показывает изображение например (1-трансофрматор, 2-трансофрамтор и т.д.). Элемент TAB имеет входной параметр число.
Я пришел к выводу что нужно реализовать решение такое: Клиент у себя на машине нажимает на кнопку вызова диалогово окна и на сервере в текстовой файлик записывается число например 124.
Далее программа написанная на LabVIEW просто читает этот текстовый файлик анализирует число и в соответствии с ним показывает картинку трансформатора (1-трансофрматор, 2-трансофрамтор и т.д.).
Далее что такое например:
<area shape="rect" coords="334,640,390,694" href="#1" onClick="CreateFile();window.open('TraNS.html', 'newWin', 'Toolbar=0, Location=0, Directories=0, Status=0, Menubar=0, Scrollbars=0, Resizable=0, Copyhistory=1, Width=800, Height=600')">
-это кнопка мы нажимаем на неё и на северной машине в текстовый файлик пишется число.
Теперь само главное поскольку я чайник в PHP я прошу помощи в синтаксисе как правильно написать команду <area shape="rect" coords="334,640,390,694" href="#1" onClick="CreateFile();window.open('TraNS.html', 'newWin', 'Toolbar=0, Location=0, Directories=0, Status=0, Menubar=0, Scrollbars=0, Resizable=0, Copyhistory=1, Width=800, Height=600')">
чтобы в файле не у клиента на машине а на сервере записало число например 124, или какое другое число например 256.
Надеюсь я понятно мысль свою изложил.
Просто я пытался по разному делать не получается.
Просто подскажите мне тупому как правильно команду оформить. Процедура Create мне кажется должна быть с параметром.

animhotep 11.04.2013 10:35

это всё круто конечно, но что вы забыли на этом сайте?

JohnChaban 11.04.2013 13:09

вы не поняли
меня конкретно интересует вот что
Есть например вот такая кон конструкция
<area shape="rect" coords="334,640,390,694" href="#1" onClick="CreateFile();window.open('TraNS.html', 'newWin', 'Toolbar=0, Location=0, Directories=0, Status=0, Menubar=0, Scrollbars=0, Resizable=0, Copyhistory=1, Width=800, Height=600')">
есть скрипт на сервере

<?php
2 $logfile = fopen('logi/logFile.txt', 'a');
3 fwrite($logfile, $_GET['data']."\r\n");
4 fclose($logfile);
5 ?>
я хочу понять как правильно записать <area shape="rect"..........
что бы скрипт на сервере писал различные числа в файл?
просто синтаксис. не надо вам погружаться в labview и прочие дебри смысл моего опуса выше только в этом.

Я же написал я не понимаю как прописать команду на странице.
А вы ругаться сразу.
как например написать <area shape="rect".......... что ьы на сервере записалось в текстовый файл число 10 или 16.
вот и все.

animhotep 11.04.2013 13:17

нужно в js переменную записать эти числа, воспользовавшись html атрибутом data например

JohnChaban 11.04.2013 15:06

вы не могли бы привести пример
просто если разложить по полочкам я сохранил северный скрипт в файле test.php.
как будет выглядеть команда <area shape="rect"..........

animhotep 11.04.2013 15:26

не пойму на каком этапе сложность
если есть js переменная с нужным значением, то в соседней теме есть пример как её передать в php http://javascript.ru/forum/ajax/3717...tml#post245348

lamer 11.04.2013 15:57

Цитата:

Сообщение от JohnChaban (Сообщение 245546)
я хочу понять как правильно записать <area shape="rect"..........
что бы скрипт на сервере писал различные числа в файл?
просто синтаксис.

Для начала нужно почитать про сам area, тогда бы вы увидели что:
Код:

Обработчики событий

Area-объекты имеют следующие обработчики:

    onDblClick
    onMouseOut
    onMouseOver

Area не имеет обработчика onclick поэтому сувать его туда нет смысла, так как работать не будет.

onclick можно заменить на href и с него запускать JS функцию, например:

<html>

<head>
</head>

<body>
<a href="javascript:createFile();">GoAlert</a>

<script>
function createFile() {
alert('lol');
}
</script>
</body>

</html>


Цитата:

Сообщение от JohnChaban (Сообщение 245546)
что бы скрипт на сервере писал различные числа в файл?

Я приводил пример выше как писать в файл разные числа которые вводишь в INPUT, откуда будут браться ваши числа это не понятно.
Нужно просто заменить 1 строку в коде и подставить там откуда тянуть ваши числа.
var setData = document.getElementById('data').value;


После = поставить откуда тянуть числа, если это постоянно одно число тогда делаем так:
var setData = '01001'


Решения по вашей задачи вам дали, вам всего лишь нужно почитать про синтаксис area, т.е. как в теге area выполнить функцию.
Данной информации в интернете уйма, не будьте ленивым, тут помогают людям которые сами стремятся решить задачу и не понимают лишь некоторые моменты,
вы же пытаетесь скинуть решения на других, если ходите чтоб все сделали за вас тогда вам в раздел РАБОТА.

JohnChaban 11.04.2013 16:56

Я прошу прощения
Метод INPUT не подходит у меня числа при вызове Createfile должны быть её параметрами.
Я не скидываю ни кого работу я просто чайник.

JohnChaban 23.04.2013 12:01

В продолжении темы:
Возникла необходимость в пересылке файл от клиента на сервер.
Объясню в чем суть:
Нужно чтобы файл data.txt, который находится в папке на машине клиента скажем (с:\datalogin\data.txt) по нажатию кнопки посылался в папку на сервере (c:\Test\data.txt).
Можно ли такое осуществить?

vashurin 23.04.2013 13:49

Цитата:

Сообщение от JohnChaban (Сообщение 247722)
В продолжении темы:
Возникла необходимость в пересылке файл от клиента на сервер.
Объясню в чем суть:
Нужно чтобы файл data.txt, который находится в папке на машине клиента скажем (с:\datalogin\data.txt) по нажатию кнопки посылался в папку на сервере (c:\Test\data.txt).
Можно ли такое осуществить?

http://www.softtime.ru/scripts/upload.php

vostok 23.04.2013 13:50

Может быть вам подойдет такой вариант:
<form action="index.php" enctype="multipart/form-data" method="post">
	<input type="file" name="file" />
	<input type="submit" name="submit" value="Послать файл"/>
</form>

<?php 
	
	$path = 'C:/Test/'; // Куда сохранить
	if(isset($_POST['submit'])) {
		$file = $_FILES['file'];
		if($file['error'] == 0) {
			move_uploaded_file($file['tmp_name'], $path.$file['name']);
		}
	}

?>
Появится окно где надо будет выбрать файл "руками".

JohnChaban 24.04.2013 11:24

Большое спасибо за ответ.
Просто с формой я уже пример нашел и выполнил.
А можно например без формы чтобы файл посылался командой приведенной ниже..................

<area shape="rect" coords="334,640,390,694" href="#1" onClick="CreateFile();window.open('TraNS.html', 'newWin', 'Toolbar=0, Location=0, Directories=0, Status=0, Menubar=0, Scrollbars=0, Resizable=0, Copyhistory=1, Width=800, Height=600')">

То есть когда нажимается на картинку происходит 2 действия открывается окно и файл посылается.
Или только с формой посылается?


Часовой пояс GMT +3, время: 01:52.