Как отправить данные о событии как часть запроса формы в ajax jquery - PullRequest
0 голосов
/ 04 мая 2019

У меня есть код ниже, который отлично работает, отправив запрос на сервер через ajax / jquery.

Чего я хочу достичь:

Теперь я хочу получить переменные данные, когда ввод формы сфокусирован и нажат на клавиатуре, и отправить их как часть запроса через ajax jquery. так что переменная datasend будет выглядеть примерно так:

var datasend = "myname="+ myname + "&focu=" + focu + "&pres=" + pres;

вот скрипт, показывающий, как я могу успешно публиковать данные через ajax / jquery

<script>
$(document).ready(function(){
$('#create').click(function(){
var myname= $('#myname').val();     
var datasend = "myname="+ myname;
        $.ajax({

            type:'POST',
            url:'save.php',
            data:datasend,
                        crossDomain: true,
            cache:false,
            success:function(msg){
                // print result
                            alert('success');
            }
            });
    })
});
</script>

Вот форма ввода

<input type="text" name="myname" id="myname" value="haco" />
<input type='text' id="myfocus" value="">
<input type='text' id="mypress" value="">
<input type="submit" value="submit " id="create" />

ниже, как я могу успешно проверить ввод формы focus и нажатие клавиши .

$('input').on('click', function() {
if ($('#myfocus').is(':focus')) {
alert('am focused');
var focu='am focused';
  }
});

 $('#mypress').keyup(function(){
  alert('am pressed');
var pres= 'am pressed';

});

Любая идея о том, как я могу достичь того, что запрошено выше. Есть ли работа или предложения?

1 Ответ

0 голосов
/ 04 мая 2019

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

var press = false;

$('#mypress').keyup(function(){
  press = true;
});

$('#create').click(function(){
var myname= $('#myname').val();
var focus = $('#myfocus').is(':focus');    
var datasend = "myname="+ myname + "&focu=" + focus + "&pres=" + press;
        $.ajax({

            type:'POST',
            url:'save.php',
            data:datasend,
                        crossDomain: true,
            cache:false,
            success:function(msg){
                // print result
                            alert('success');
            }
            });
    })

Это отправит параметры как true или false в вашей строке запроса, но больший вопрос в том, что именно вы пытаетесь выполнить. Событие keyup сработает для ЛЮБОЙ нажатой клавиши и только если она нажата, когда элемент со слушателем находится в фокусе. Кроме того, почему вы передаете строку запроса в качестве параметра запроса для запроса POST? Параметры запроса добавляются к URL-адресу для запросов GET, но для POST вы можете создать объект со своими данными и назначить его телу запроса с помощью свойства data. Если вы не пытаетесь сформулировать какой-то другой запрос с помощью буквальной строки запроса.

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