我即将使用AJAX创建一个简单的按钮加载。但每当我发送响应时,窗口就会将其打印出来,而不是执行成功功能。
这是我的代码:(编辑它,我很抱歉没有发布整个代码)。
$(document).ready(function(){
$("#register-form").validate({
rules:{
email: {
required: true
},
},
submitHandler: submitRegister
});
function submitRegister(){
var data = $("#register-form").serialize();
$.ajax({
type: 'POST',
url: 'signupinc.php',
data: data,
beforeSend: function() {
$("#error").fadeOut();
$("#register").html('Sending ...');
},
success : function(response) {
if(response==1){
$("#error").fadeIn(1000, function(){
$("#error").html('<div class="alert alert-danger"> Please input valid credentials!</div>');
$("#register").html(' Create Account');
});
}
else if(response=="registered"){
$("#register").html(' Signing Up ...');
}
}
});
return false;
}
});
这是我的signupinc.php
文件代码:
<?php
require 'db.php';
if(isset($_POST['register'])){
$fname =$mysqli->escape_string($_POST['fname']);
$lname = $mysqli->escape_string($_POST['lname']);
$email = $mysqli->escape_string($_POST['email']);
$password = $mysqli->escape_string($_POST['pass']);
$hash = $mysqli->escape_string(md5( rand(0,1000)));
$emailstmt = $mysqli->prepare('SELECT * FROM users WHERE email=?') or die($mysqli->error());
$emailstmt->bind_param('s', $email);
$emailstmt->execute();
$emailstmt->store_result();
$emailCheck = $emailstmt->num_rows;
if($emailCheck > 0){
echo "1";
}
else{
$hashedpassword = password_hash($password, PASSWORD_DEFAULT);
$successstmt = $mysqli->prepare('INSERT INTO users (fname, lname, email, password, hash)
VALUES (?,?,?,?,?);');
$successstmt->bind_param('sssss', $fname, $lname, $email, $hashedpassword, $hash);
$successstmt->execute();
echo "2";
}
}
此处还有截图。
答案 0 :(得分:0)
问题是表单是以默认方式提交的......你应该阻止默认行为,然后调用函数submitRegister
$('#register-form').submit(function(event){
event.preventDefault();
submitRegister();
});
function submitRegister(){
var data = $("#register-form").serialize();
$.ajax({
type: 'POST',
url: 'signupinc.php',
data: data,
beforeSend: function() {
$("#error").fadeOut();
$("#register").html('Sending ...');
},
success : function(response) {
if(response==1){
$("#error").fadeIn(1000, function(){
$("#error").html('<div class="alert alert-danger"> Please input valid credentials!</div>');
$("#register").html(' Create Account');
});
}
else if(response=="registered"){
$("#register").html(' Signing Up ...');
}
}
答案 1 :(得分:0)
1) In the php file please place this line for JSON response.
header('Content-Type: application/json');
2) json encode the result like
echo json_encode('1')
3) in the ajax specify the data format like :
$.ajax({
........
dataType: "json",
........
})