Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.02.2015, 05:10
Аспирант
Отправить личное сообщение для CraftLawrence Посмотреть профиль Найти все сообщения от CraftLawrence
 
Регистрация: 22.11.2014
Сообщений: 44

Запись в файл без перезагрузки страницы
Доброй ночи. Мне необходимо осуществить запись в файл на сервере (к примеру, в /doc/1.txt) по нажатию на кнопку. Вычитал, что js не имеет доступа к файлам на сервере. Ну а php после нажатия на кнопку и записи в файл перезагрузит страницу, а для меня это вообще недопустимо.
Скажите, реально ли это все же решить средствами js? Если да, то скажите, в какую сторону хотя бы погуглить..
Ответить с цитированием
  #2 (permalink)  
Старый 21.02.2015, 05:33
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от CraftLawrence
Вычитал, что js не имеет доступа к файлам на сервере
Ну разумеется. Никто не имеет доступа к файлам на твоем сервере )
Иначе это коммунизм бы какой-то получился - каждый может создавать и изменять файлы на твоем сервере как пожелает )) Впрочем, некоторым это удается в любом случае
Сообщение от CraftLawrence
Ну а php после нажатия на кнопку и записи в файл перезагрузит страницу
php не может перезагрузить страницу. Он работает на сервере. А страницу перезагружает браузер, когда ты кнопку нажимаешь.

Теперь по сути:
- Записать файл можно только из php.
- Браузер не умеет запускать php. Все что он умеет - это слать HTTP-запросы к серверу. А сервер уже может запустить php-скрипт.
- Когда ты отправляешь кнопкой форму или переходишь по ссылке, браузер отсылает HTTP-запрос к серверу, а получив в ответе html-страницу - отображает ее.
- Из браузера можно отправить HTTP-запрос и не перезагружая страницу, через XMLHttpRequest.

Короче, читай про XMLHttpRequest

Вообще, чтоб ты знал, http-запрос повлечет за собой и создание любого внешнего ресурса на странице - таблица стилей, скрипт, картинка, фрейм и т.д.

Например:
new Image().src = 'script.php?data=abc'

Но это костыль с ограниченными возможностями, так что юзать надо XMLHttpRequest.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 21.02.2015, 05:35
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

И еще, неограниченная запись в файл - это потенциальная уязвимость твоего сервера.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #4 (permalink)  
Старый 21.02.2015, 05:47
Аспирант
Отправить личное сообщение для CraftLawrence Посмотреть профиль Найти все сообщения от CraftLawrence
 
Регистрация: 22.11.2014
Сообщений: 44

Сообщение от danik.js Посмотреть сообщение
Короче, читай про XMLHttpRequest
Оо, спасибо за этот ответ. Уже наверное с десяток раз твои ответы в других темах, которые я доставал из недр гугла, мне помогали) Так что пользуясь случаем, за них тоже спасибо))
Пойду читать подробнее про этот XMLHttpRequest.
Ответить с цитированием
  #5 (permalink)  
Старый 21.02.2015, 14:18
Аспирант
Отправить личное сообщение для CraftLawrence Посмотреть профиль Найти все сообщения от CraftLawrence
 
Регистрация: 22.11.2014
Сообщений: 44

Перелопатил более двух десятков страниц по этому XMLHttpRequest, но так и не нашел способа тупо выполнить .php файл на сервере.
Пробовал и так, и многими другими подобные способами - ни в какую.
function test()
		{
			var xhr = new XMLHttpRequest();
			
			xhr.open('GET', 'write.php', true);
			
			xhr.onload = function() {
			  alert(this.responseText);
			}

			xhr.onerror = function() {
			  alert('Ошибка ' + this.status);
			}

			xhr.send('');
		}
Скажите, может я в корне не верно мыслю?
Ответить с цитированием
  #6 (permalink)  
Старый 21.02.2015, 15:19
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Вам надо не способ под себя искать, а прочесть и уяснить все об объекте XMLHttpRequest, в частности что означает true/false третьего аргумента вами прописанного xhr.open('GET', 'write.php', true);, о передаче параметров, если нужны.
Ответить с цитированием
  #7 (permalink)  
Старый 21.02.2015, 16:42
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

CraftLawrence, все правильно. Алерт появляется после запуска? Если нет - значит ошибка в синтаксисе, смотри консоль по F12. Функцию то не забываешь запускать?
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #8 (permalink)  
Старый 21.02.2015, 16:53
Аспирант
Отправить личное сообщение для CraftLawrence Посмотреть профиль Найти все сообщения от CraftLawrence
 
Регистрация: 22.11.2014
Сообщений: 44

Сообщение от danik.js Посмотреть сообщение
CraftLawrence, все правильно. Алерт появляется после запуска? Если нет - значит ошибка в синтаксисе, смотри консоль по F12. Функцию то не забываешь запускать?
Да, уже разобрался) Проблема была в том, что я функцию не вызывал.
Вопрос решен, всем спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отправка e-mail без перезагрузки страницы raffx AJAX и COMET 2 26.11.2013 16:13
Загрузка аватарки без перезагрузки страницы kez jQuery 35 22.05.2009 11:12
Подгрузка информера без перезагрузки страницы splean Общие вопросы Javascript 6 13.03.2009 15:31
Как сделать смену картинки, типа "до" и "после", без перезагрузки страницы? btstudio Events/DOM/Window 2 23.02.2009 20:43
Автообновление <div> без перезагрузки страницы Antihrist AJAX и COMET 14 28.07.2008 06:06