Я пытаюсь вызвать php-файл, используя функцию $ .ajax () в jQuery, однако он не работает. Следующий код запускается при нажатии кнопки на странице:
if($error === false) { alert($error); $.ajax({ url: '/new-user.php', type: 'POST', data: { name: $('#name').val(), email: $('#name').val(), password: $('#name').val() } });
Это моя форма:
<form onClick="return false;" class="reg-form"> <div class="row"> <div class="col-md-6"> <div class="form-group"> <label for="name">First Name</label> <input type="text" id="name" class="form-control" autofocus="autofocus"> </div> </div> <div class="col-md-6"> <div class="form-group"> <label for="email">Email Address</label> <input type="text" id="email" class="form-control"> </div> </div> </div> <div class="row"> <div class="col-md-6"> <div class="form-group"> <label for="password">Password</label> <input type="password" id="password" class="form-control"> </div> </div> <div class="col-md-6"> <div class="form-group"> <label for="password-confirm">Confirm Password</label> <input type="password" id="password-confirm" class="form-control"> </div> </div> </div> <button class="btn trans reg-btn">Sign Up</button> <div class="reg-msg"> <span id="password-error-msg">Passwords do not match.</span> </div> </form>
Я установил форму onClick для возврата false, чтобы форма не перезагружала страницу при отправке, чтобы запустить jQuery.
Любая помощь приветствуется.
Основная причина, по которой люди используют формы, состоит в том, чтобы вы могли определить
действие (в вашем случае скрипт php),
метод (GET или POST) и
submit , которая фиксирует всю информацию в форме и автоматически отправляет ее на сервер.
Это хорошо, когда у вас есть 20-30 входов или вы работаете с несколькими файлами. В вашем случае вы обрабатываете поиск данных в своей функции ajax, у вас нет кнопки отправки, действия или метода, поэтому вы можете сделать многое намного проще, не используя форму вообще …
$.ajax({ url: '/new-user.php', type: 'POST', dataType: "json", data: { name: $('#name').val(), email: $('#email').val(), password: $('#password').val() } }).done(function(data){ alert(JSON.stringify(data)); });
Я просто забыл о форматировании divs …
<input type="text" id="name" class="form-control" autofocus="autofocus"> <input type="text" id="email" class="form-control"> <input type="password" id="password" class="form-control">
Вышеприведенный код будет захватывать данные на ваших входах, отправлять их на php-скрипт и выводить данные, которые отправляются обратно из вашего php-скрипта в предупреждении.
И самое главное, ваша страница НЕ обновится!
Я фактически сериализую свои данные формы, потому что это меньше кода. Кроме того, вы можете использовать его с несколькими формами. Например, у вас может быть скрытый ввод, который содержит номер задачи и имеет один скрипт php для делегирования заданий. Или у вас может быть другая переменная для функции отправки, чтобы передать местоположение вашего скрипта. Поэтому я представляю свои формы следующим образом.
HTML:
<form onsubmit="submitForm('#myForm'); return false;" id='myForm'> <input type='text' name='name'/> <input type='text' name='email'/> <input type='text' name='password'/> <input type='submit'/> </form>
Javascript:
function submitForm(formId){ var formData = $.(formId).serialize(); $.ajax({ url: '/script.php', type: 'POST', data: formData, success:function(response){ alert(response); } }); }
Пожалуйста, попробуйте следующий код:
$(".reg-btn").click(function(e) { e.preventDefault(); $.ajax({ url: '/new-user.php', type: 'POST', data: { name: $('#name').val(), email: $('#name').val(), password: $('#name').val() }, success:function(response){ //Do something here... } }); });
Обратите внимание, что у вас нет кнопки отправки в вашей форме. Поэтому return false бесполезно.