Php ajax只想显示错误信息表单提交

时间:2015-08-11 09:59:52

标签: php jquery ajax

将表单数据发送到php文件后,如果发现任何错误则返回。但它也在ajax重定向页面之前返回成功。我只想显示错误消息,如果成功,则重定向另一页。

ajax:

$("#msform").submit(function(){
     $.ajax({
           type:"post",
           url:"pagesubmit.php",
           data:  $("#msform").serialize(),
           dataType : 'json',
           success: function(data){
           if ( ! data.success) {
                $(".help-block").fadeIn().html(data.error);
           } else {
                $(".help-block").fadeOut();
                $("#msform")[0].reset();
                window.location = 'http://dbsvawdez.com/' + data.success;
           }
           }
     });
});

php:

include_once ("db.php");
global $dbh;

function check($name){
  if(!$name || strlen($name = trim($name)) == 0){
     $error ="* Username not entered";
  }
  else{
     $name = stripslashes($name);
     if(strlen($name) < 5){
        $error ="* Name below 5 characters";
     }
     else if(!preg_match("/^([0-9a-z])+$/i", $name)){
        $error ="* Name not alphanumeric";
     }
     else {
        return 1;  
     }
  } 
}

  $name = mysqli_real_escape_string($dbh, $_POST['name']);

  $thisname = strtolower($name);

  $retval = check($thisname);

  if($retval ==1){ // if no error found
   $success ='upage/userpage?user='.$_SESSION['username'].'';                           
  }


$data = array();
$data['error'] = $error;
$data['success'] = $success;
if (!empty($data)) {
    echo json_encode($data);
}

1 个答案:

答案 0 :(得分:0)

修改

设置变量$success$error

$success = "";
$error= "";

如果你没有初始化它们,你就不能使用它们,而.=运算符用于连接而不是用于设置。

然后你应该用JSON中的php编码响应。

这样的东西
$response = json_encode(
    array(  
        'success'=> true,  
        'route' => "mypage/info?user=$_SESSION['username']"
    )
);

然后将其返回,然后像您一样访问您的回复:

var success = response.success;

<强>更新

更改此代码以添加else语句:

if($retval ==1){ // if no error found
    $success ='upage/userpage?user='.$_SESSION['username'].'';                           
}else{
    $success = 'error';
}

和这一行:

else {
    return 1;  
}

到:

else {
   $error = 'none';
}

并在您的javascript中:

$("#msform").submit(function(){
    $.ajax({
        type     :"post",
        url      :"pagesubmit.php",
        data     :  $("#msform").serialize(),
        dataType : 'json',
        success  : function(data){
            if(data.success == 'error') {
                $(".help-block").fadeIn().html(data.error);
            }else{
                $(".help-block").fadeOut();
                $("#msform")[0].reset();
                window.location = 'http://dbsvawdez.com/' + data.success;
            }
        }
    });
});