Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   onkeydown и GET запрос (https://javascript.ru/forum/css-html/6562-onkeydown-i-get-zapros.html)

Jekel 05.12.2009 19:26

onkeydown и GET запрос
 
Как сделать чтобы при нажатии на Enter запрос посылался безпрерывно до того момента пока клавишу не отпустят? т.е Нажал и держишь клавишу - отправка запроса происходит безпрерывно...ну раз в пол-секунды можно..Пожалуйста помогите:blink:

Вот сейчас так выглядит функция отправки запроса:
document.onkeydown = function keyIsDown() {
    if (event.keyCode == 13) {
    xmlHttp.open("GET", "controls.php?keyEnter=1", true);  
    xmlHttp.onreadystatechange = readData;
    xmlHttp.send(null);
  }
};


и почему этот код (нажатие клавишы) не работает в FF и IE ???

Gvozd 05.12.2009 20:24

Цитата:

Сообщение от Jekel
и почему этот код (нажатие клавишы) не работает в FF и IE ???

а что где-то работает что ли?
Цитата:

Сообщение от Jekel
function keyIsDown()

зачем давать имя анонимной функции?
не уверен, что парсер правильно обрабатывает эту вашу конструкцию, без дополнительных скобок
Цитата:

Сообщение от Jekel
if (event.keyCode == 13) {

http://javascript.ru/tutorial/events...-sobytie-event

Jekel 05.12.2009 20:25

в опере работает

Jekel 05.12.2009 20:32

http://javascript.ru/tutorial/events...-sobytie-event

чет не могу об клавиатурных кнопках найти..все об мышке....измените мой код пожалуйста так как должно быть правильно

Gvozd 05.12.2009 20:36

ну, вы ссылочку-то почитайте, да

Kolyaj 05.12.2009 21:20

Цитата:

Сообщение от Gvozd
не уверен, что парсер правильно обрабатывает эту вашу конструкцию, без дополнительных скобок

У function expression может быть имя.

В данном случае, конечно, оно ни к чему, но и смертельного нет ничего. Иногда полезно.

Jekel 06.12.2009 13:30

мне имя нужно будет) а от до сих пор не могу сделать...оно не работает в FF и IE и все...печаль!

Jekel 06.12.2009 14:02

help please:(

Gvozd 06.12.2009 14:51

Jekel,
вы ссылку внимательно читали?
неужели было трудно провести изменения которые там указаны
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>йцуке</title>

</head>
<body>
<div id='selUser' >qwe
</div>
<script type="text/javascript">
document.onkeydown = function keyIsDown(event) {
	event = event || window.event;
    if (event.keyCode == 13) {
	document.getElementById('selUser').innerHTML+='|';
    /*xmlHttp.open("GET", "controls.php?keyEnter=1", true);  
    xmlHttp.onreadystatechange = readData;
    xmlHttp.send(null);*/
  }
};
</script>
</body>
</html>

код работает во всей тройке браузеров

Jekel 06.12.2009 15:19

огромное спасибо, сейчас прогоню:yes:

Jekel 06.12.2009 18:18

:( в IE так и не работает( при нажатии и уждержании клавишы посылка запроса постоянно происходит только в FF в опере нужно постоянно нажимать на клавишу:-? ну и в том же FF запросы тупят как-то( причем жестко...и через пару секунд вообще прекращает подавать запросы
Вот код весь:
Это код html странички
<script language="JavaScript" type="text/javascript" src="saver.js"></script>
<html>
<head>
<title>123</title>
<meta http-equiv="Content-type:text/xml" charset="cp1251">
<script language="JavaScript" type="text/javascript" src="saver.js"></script>
</head>  
<body onLoad='sendData()'>
<center>
id: <input type="text" id="txtCustomerId" value="1">
<div id="txtCustomerInfo"></div>
</center>
</body>
</html>


Это saver.js
var xmlHttp = createXmlHttpRequestObject(); 
function createXmlHttpRequestObject() {	
  var xmlHttp;
  if(window.ActiveXObject){
    try{
      xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }catch (e){
      xmlHttp = false;
    }
  }else{
    try {
      xmlHttp = new XMLHttpRequest();
    }catch (e){
      xmlHttp = false;
    }
  }
  if (!xmlHttp){
    alert("Не создает xml объект.");
  }else{
    return xmlHttp;
  }
};

//ПОСЫЛКА ЗАПРОСА ПО ID

function sendData(){
  if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0){
    name = encodeURIComponent(document.getElementById("txtCustomerId").value);
    xmlHttp.open("GET", "customers.php?id=" + name, true);  
    xmlHttp.onreadystatechange = readData;
    xmlHttp.send(null);

  }else{
    setTimeout('sendData()', 200);
  }
};

//ЧТЕНИЕ РЕЗУЛЬТАТА

function displayCustomerInfo(sText) {
   sElem = document.getElementById("txtCustomerInfo");
   sElem.innerHTML = sText;
  }
function readData() {
  if (xmlHttp.readyState == 4) {
    if (xmlHttp.status == 200) {
      xmlResponse = xmlHttp.responseXML;
      xmlDocumentElement = xmlResponse.documentElement;
      helloMessage = xmlDocumentElement.firstChild.data;
      displayCustomerInfo(xmlHttp.responseText);
      setTimeout('sendData()', 200);
	  
    }else{
      alert("Не получен ответ сервера: " + xmlHttp.statusText);
    }
  }
};

//УПРАВЛЕНИЕ

document.onkeydown = function keyIsDown(event) {
//***W***
event = event || window.event;
    if (event.keyCode == 87) {
    xmlHttp.open("GET", "controls.php?keyW=1", true);  
    xmlHttp.onreadystatechange = readData;
    xmlHttp.send(null);
  }
};


ПХП управления controls.php
require_once "config.php";

$keysW = $_GET['keyW'];

$linkj = mysql_connect($host,$user,$pass);
@mysql_select_db($database);

$mybase = mysql_query("SELECT * FROM customers WHERE id='1'"); 
$dbcon = mysql_fetch_array($mybase);
$x = $dbcon['x'];
$y = $dbcon['y'];

if($keysW==1){
$suy = $y - 2;
mysql_query("UPDATE customers SET y='".$suy."' WHERE id='1'");
$keysW=0;
}


ПХП обмен данных с базой customers.php
header('Content-Type: text/xml; charset=windows-1251');
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
echo '<response>';

require_once "config.php";
    
$sId = $_GET['id'];
	
$link = mysql_connect($host,$user,$pass) or die(mysql_error());
mysql_query("SET NAMES windows-1251");
    
$query = mysql_real_escape_string("SELECT * FROM customers WHERE id=$sId"); 
    
@mysql_select_db($database) or ($info = mysql_error());
    
if($result = mysql_query($query) and mysql_num_rows($result) > 0) {
        $values = mysql_fetch_array($result,MYSQL_ASSOC);
		$x = $values['x'];
		$y = $values['y'];
        $info = '<img src="1.gif" alt="" id="player" style="position: absolute; left:'.$x.'; top:'.$y.'"></img>';
} else {
        $info = "Не найден id!";
}
    
echo $info;

echo '</response>';


Пожалуйста помогите оптимизировать этот код):help:

Kolyaj 06.12.2009 18:48

Цитата:

Сообщение от Jekel
мне имя нужно будет)

Зачем? По нему все равно обратиться нельзя будет.

Jekel 06.12.2009 19:01

ну лан, вопрос в другом)

Jekel 08.12.2009 01:51

Помогите пожалуйста...:( очень прошу!

Jekel 08.12.2009 04:04

Действительно тупит код...обьясните почему??? тупит рисунок при перемещении жестко


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