Я пытался выучить базовые 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? Я все еще довольно потерян.
Три изменения: —
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",
});
});
});
Вы не можете отправить данные как 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",
});
});
});
#
враг id селектор word1
,.on()
необходимо событие, чтобы связать с. В случае отправки формы это submit
Данные должны быть переданы как объект. В вашем случае вы сможете получить к нему доступ с $_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"});
});
});
ты скучаешь, чтобы дать #
войти в систему var verb = $("word1").val();
и использовать переменную так же, как переменную data
лайк data: {"your_var_name" : verb}
Попробуй это …
$.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
}
});
Вы должны сделать это:
var verb = $("#word1").val(); //Don't forget to add #
$.ajax({
url: "testrun.php",
data: {"verb":verb},
type: "POST",
});
verb
переменная, нет необходимости ставить между кавычками!