2014-09-17 1 views
19

У меня есть 1 главная страница с формой и другой страницей, чтобы обработать значение формы здесь являются исходными кодами 2 страниц

Формы Страница:

<meta charset="UTF-8"> 
<title>Form Page</title> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<form action="process.php" method="post" id="reg-form"> 
     Username: <input type="text" id="username" name="username"> 
     <br> 
     Password: <input type="password" id="password" name="password"> 
     <br> 
     <button type="submit" id="submit-btn">Traditional Submit</button> 
     <button type="button" id="post-btn">$.Post Submit</button> 
</form> 
<script> 
    $("#post-btn").click(function(){   
     $.post("process.php",function(data){ 
      alert(data); 
     }); 
    }); 
</script> 

Процесс Страница:

<?php 
$username=$_POST["username"]; 
$password=$_POST["password"]; 
echo "Username: ".$username; 
echo "<br>"; 
echo "Password: ".$password;?> 

если я нажимаю «Tradi «Отправить», но работает отлично.

, но когда я нажимаю «$ .Подать Отправить» кнопку, я просто продолжаю получать сообщ об ошибке «Примечание: Undefined индекс ...»

Я не могу понять, где проблема, пожалуйста, пожалуйста, помогите проверить и исправить, спасибо заранее!

+0

Да, я пытаюсь использовать Ajax для обработки значений формы и оставаться на главной странице (вместо того, чтобы перенаправляться на страницу процесса, например, используя традиционную форму submit) – Yolo

ответ

40

Вы должны выбрать и отправить данные формы, а также:

$("#post-btn").click(function(){   
    $.post("process.php", $("#reg-form").serialize(), function(data) { 
     alert(data); 
    }); 
}); 

Посмотрите на документацию для метода JQuery serialize, который кодирует данные из полей формы в строка данных, отправляемая на сервер.

+1

Просто добавление к этому: 'action =" process.php "method =" post "' больше не требуется в элементе '

', поскольку представление обрабатывается jQuery AJAX'. post() '. – nyedidikeke

6

Получите значение своих текстовых полей, используя val() и сохраните их в переменной. Передайте эти значения через $.post. При использовании $.Post Submit button вы можете удалить форму.

<script> 

    username = $("#username").val(); 
    password = $("#password").val(); 

    $("#post-btn").click(function(){   
     $.post("process.php", { username:username, password:password } ,function(data){ 
      alert(data); 
     }); 
    }); 
</script> 
+2

Еще лучше, используйте метод '' serialize'' ] (http://api.jquery.com/serialize/) –

+1

@SeanVieira Я не знаю, как это использовать. В чем его цель? Я узнал об этом, но просто не могу понять :) Пожалуйста, скажите мне –

+5

'serialize' принимает форму (или набор входов) и превращает все теги' input', 'select' и' textarea' в строка, подходящая для отправки в качестве тела HTTP POST-запроса (или как строка запроса запроса GET). Например, сериализуя форму с единственным полем, '' становится '" firstName = Sean "'. –

4

Yor $.post не имеет данных. Вам необходимо передать данные формы. Вы можете использовать serialize(), чтобы опубликовать данные формы. Попробуйте

$("#post-btn").click(function(){ 
    $.post("process.php", $('#reg-form').serialize() ,function(data){ 
     alert(data); 
    }); 
}); 
Смежные вопросы