Ajax没有收到来自php的响应,而是打印了响应

时间:2017-11-19 18:12:34

标签: php jquery ajax

我即将使用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">&nbsp; Please input valid credentials!</div>');           
          $("#register").html(' &nbsp; Create Account');          
        });                    
      }
      else if(response=="registered"){         
          $("#register").html('&nbsp; 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";
    }
}

此处还有截图。

enter image description here

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">&nbsp; Please input valid credentials!</div>');           
                   $("#register").html(' &nbsp; Create Account');          
                 });                    
               }
               else if(response=="registered"){         
                   $("#register").html('&nbsp; 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",
       ........
    })