2013-03-20 3 views
1

Я пытаюсь отправить положение мыши на сервер с помощью метода jquery $ .ajax, но я не могу сделать это правильно.

$(document).ready(function (e) { 
     var x = e.pageX; 
     var y = e.pageY; 
     $(document).mousemove(function() { 
      $.ajax({ 
       type: "POST", 
       url: "get_position.php", 
       data: { 
        pos_x: x, 
        pos_y: y 
       } 
      }); 
     }); 
    }); 

Этот код вызывает сбой браузера. Каков правильный способ сделать это?

+4

Вы отправляете запрос AJAX на * каждый * перемещения мыши. Thats gotta crash * любой * браузер. – techfoobar

+2

Возможно, вы отправляете столько запросов, которые браузер просто не может догнать. Mousemove - довольно ** частый ** случай. Попробуйте собрать позиции мыши в массив и периодически отправлять обновления ajax. Постскриптум отличная DoS-атака на браузере и довольно легальная, спасибо :) – J0HN

+0

Посмотрите эту ссылку здесь http://docs.jquery.com/Tutorials:Mouse_Position – Mingebag

ответ

3

Вы отправляете запрос AJAX по телефону каждые перемещение мыши. Thats должен разрушить любой браузер.

Вместо этого храните мышиные координаты на некоторой переменной при каждом перемещении мыши, но не отправляйте их на сервер каждый раз. Отправляйте их на сервер периодически, скажем, раз в минуту или около того.

т.е. что-то вроде:

var coords[0, 0]; 
$(document).mousemove(function (e) { 
    coords = [e.pageX, e.pageY]; 
}); 

function sendThem() { 
    $.ajax({ 
     type: "POST", 
     url: "get_position.php", 
     data: { 
      pos_x: coords[0], 
      pos_y: coords[1] 
     } 
    }); 
} 

setInterval(sendThem, 1000); 
+0

Я бы использовал объект coords 'var coords = {}' и установил или получить coords.x/coords.y. – Simon

Смежные вопросы