Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   отправка формы без перегрузки (https://javascript.ru/forum/misc/41774-otpravka-formy-bez-peregruzki.html)

natureproj 28.09.2013 23:16

отправка формы без перегрузки
 
Доброго времени суток всем, кто читает эту тему. Делаю расширение для хрома, которое считает время, проведенное на определенном сайте, например javascript.ru и отправляет данные на мой сайт, пусть moisait.ru .
Вопрос в том, чтобы отправить данные без перегрузки страницы и загрузки страницы на которую отправка. ВОт мой код:
document.write('<form id="formstat" name="formstat" method="POST" action="http://mpisait.ru/statistic.php">'+
					'<input type="hidden" name="login" value="admin"/>'+
					'<input type="hidden" name="time" value="15"/>'+
					'</form>');
					
	var form = document.getElementById('formstat');
 form.submit();

отправка происходит, но пользователя перенаправляет на страницу http://mpisait.ru/statistic.php

ksa 28.09.2013 23:22

natureproj, отправляй данные используя ajax...

natureproj 28.09.2013 23:45

да, вкурсе. Сейчас так плдключил jquery:
document.write('<form id="formstat" name="formstat" method="POST" action="http://moisaitru/statistic.php">'+
					'<input type="hidden" name="login" value="admin"/>'+
					'<input type="hidden" name="time" value="15"/>'+
					'</form>');
				
   document.write('<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>'+
   '	<script>var form = $(\'#formstat\');'+
 'form.submit();</script>');

Как отправить аяксрм кто подскажет?

ksa 28.09.2013 23:58

Цитата:

Сообщение от natureproj
плдключил jquery
...
Как отправить аяксрм

Там есть целый набор методов...
$.get();
$.ajax();

http://jquery-docs.ru/Ajax/jQuery.get/
http://jquery-docs.ru/ajax/jquery-ajax/

natureproj 29.09.2013 00:14

Написал вот так:
document.write('<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>'+
   '	<script> $.get("http://moisait.su/statistic.php", { login: "admin", time: "15" } );</script>');

Отправка происходит, но страница в браузере, на которой пользователь не загружается. Просто белая страница. В чем проблема сейчас?

ksa 29.09.2013 00:18

Цитата:

Сообщение от natureproj
Просто белая страница.

Так там у тебя и нет ничего... :D
Откуда там чего появится?

natureproj 29.09.2013 00:39

не понял. У меня расширение для хрома. Польователь и знать ничего не должен когда там что отправляется. Как решить вопрос?

ksa 29.09.2013 00:40

Цитата:

Сообщение от natureproj
У меня расширение для хрома.

Тогда я пас... :cray:

natureproj 29.09.2013 00:40

То есть пользователь зашел на сайт, он загрузился и с интервалом в 10 секунд отправляются в фоновом режиме гет запросы на мой сайт

ruslan_mart 29.09.2013 05:33

Цитата:

Сообщение от natureproj
в 10 секунд отправляются в фоновом режиме гет запросы на мой сайт

А сайт не лопнет? :)

Хотя... в принципе, не так уж и много 6 запросов в минуту.

danik.js 29.09.2013 06:40

var request = new XMLHttpRequest();
request.open('GET', 'http://your-site.ru?login=admin&time=15');
request.send();

Неужели никто не мог подсказать?

danik.js 29.09.2013 06:42

ММ. А нафига чета куда-то слать? Почему бы не собирать статистику в localStorage? И тогда можно обойтись без всяких запросов и таймеров.

natureproj 29.09.2013 13:38

danik.js, отлично, спасибо! делаю так:
localStorage.setItem('z', '10');

если в этом же скрипте вывести
var z = localStorage.getItem('z');
	alert(z);

то выводит 10, пробую вывести в другом (popup.js) - выводит null

danik.js 29.09.2013 13:57

Цитата:

Сообщение от natureproj
danik.js, отлично, спасибо! делаю так:


Где ты так делаешь? В background-скрипте расширения? А в каком контексте исполняется popup.js ? Скорей всего у него нет прямого доступа к localStorage. Пересылай через сообщения.

natureproj 29.09.2013 15:36

да, в бэкграунд скрипте. Запускается он так:
"content_scripts": [
    {
      "matches": [ "*://*/*" ],
      "js": [ "background.js" ]

    }

Как я понял, то на каждой странице запускается этот скрипт. А как передать данные в popup.html?

danik.js 29.09.2013 16:55

Цитата:

Сообщение от natureproj
да, в бэкграунд скрипте. Запускается он так:

Ниче подобного. Это контент-скрипт. А вот фоновый так объявляется:
"background": {
    "scripts": ["background.js"]
  },

Но я не спец по расширениям так что особо не помогу тут. Читай доки, в них много че написано. Данные передавать можно через систему сообщений onMessage/sendMessage


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