AJAX не отправляет пользовательский ввод из формы в скрипт PHP

Я пытался выучить базовые AJAX и Javascript, следуя различным учебным пособиям и примерам в Интернете, но я попал в стену. Я пытаюсь написать простой сценарий для получения пользовательского ввода из формы с использованием AJAX и отправки его в сценарий PHP, который затем просто повторяет ввод.

Все, что я могу сказать, это то, что все, что вводится, не проходит, но я еще не дошел до того, что могу сказать, почему. Я пробовал как с POST и GET, так и с различными типами данных, с тем же результатом. Я уверен, что я делаю что-то не так или неправильно, но я не уверен, что.

HTML / AJAX

<form id="my_form">
word <input type ="text" id="word1"/><br/>
<input type="submit">
</form>
<script>
$(document).ready(function(){
$("#my_form").on(function(e){
e.preventDefault();
var verb = $("word1").val();
$.ajax({
url: "testrun.php",
data: "verb",
type: "POST",
});
});
});
</script>

PHP

if (isset($_POST['verb'])){
$x= $_POST['verb'];
echo $x;
}else {
echo "not working";
}

РЕДАКТИРОВАТЬ: я пробовал некоторые из предложений до сих пор, копируя и вставляя их напрямую, и ни один из них на самом деле не сделал ничего, что я вижу. Я думаю, что начинаю понимать немного больше о том, как должен работать AJAX, основываясь на ответах, но по какой-то причине он все еще не дошел до PHP. Я пробовал как с AJAX / HTML в отдельном файле, который вызывает скрипт testrun.php, так и с помещением всего в файл testrun.php и в основном с тем, чтобы он вызывал сам себя с AJAX, но ни один из подходов ничего не достиг.

Если AJAX, который я получил по ответам, в порядке, то я неправильно понимаю, как настроить PHP для получения данных POST? Я все еще довольно потерян.

4

Решение

Три изменения: —

1.var verb = $ ("word1").val(); нужно быть var verb = $ ("#word1").val();потому что его идентификатор (word1)

2.data: "verb", должно быть data: {"verb":verb},

3. Форма представления должна быть правильной, поэтому приведенный ниже код (отсутствует submit): —

Правильный код: —

$(document).ready(function(){
$("#my_form").on('submit',function(e){ // check here you have one missing `submit`
e.preventDefault();
var verb = $("#word1").val(); // remove space between `$` and `(`
$.ajax({
url: "testrun.php",
data: {"verb":verb},
type: "POST",
});
});
});
4

Другие решения

Вы не можете отправить данные как data: "verb", в аяксе. Вы должны отправить свои данные в параметрах.

Во-вторых, вы не можете получить значение word1 ввод как $("word1").val(); вам нужно использовать # для получения ввода по идентификаторам.

Пример:

$(document).ready(function(){
$( "#my_form" ).submit(function( e ) { //CHANGED using submit event.
e.preventDefault();
var verb = $("#word1").val(); //CHANGED
$.ajax({
url: "testrun.php",
data: "verb="+verb, //CHANGED
type: "POST",
});
});
});
2

  1. Ты забыл # враг id селектор word1,
  2. .on() необходимо событие, чтобы связать с. В случае отправки формы это submit
  3. Данные должны быть переданы как объект. В вашем случае вы сможете получить к нему доступ с $_POST['verb']

    $(document).ready(function ()
    {
    $("#my_form").on('submit', function (e)
    {
    e.preventDefault();
    var verb = $("#word1").val();
    $.ajax({
    url: "testrun.php",
    data: {verb: verb},
    type: "POST"});
    });
    });
    
1

ты скучаешь, чтобы дать # войти в систему var verb = $("word1").val();

и использовать переменную так же, как переменную data лайк data: {"your_var_name" : verb}

1

Попробуй это

$.ajax({
type: "POST",
url: "testrun.php",
data: "paramname=value",  // access in php $_POST['paramname']
success: function(data){
// if page request is success
},
error: function(data){
// if page request failes
}
});
0

Вы должны сделать это:

var verb = $("#word1").val();  //Don't forget to add #
$.ajax({
url: "testrun.php",
data: {"verb":verb},
type: "POST",
});

verb переменная, нет необходимости ставить между кавычками!

Правильный ответ
ВОТ от Муравей

0
По вопросам рекламы [email protected]