在不同的服务器上获得不同的代码结果

时间:2015-12-31 01:37:57

标签: php ajax

enter image description here 这是根据答案更新的,但我仍然有问题。

var dataString = $("#acc_form").serialize();
var action = $("#acc_form").attr('action');

$.ajax({
type: "POST",
dataType:"JSON",
url: action,
data: dataString,
success: function(res){
                if(res.status === 'error'){
                    console.log('Error!!!');
                } else{
                    console.log('Success!!!');
                }
            }


});

这是我检查的地方,也是我感到困惑的地方。我的其他陈述看起来不对。

$desired_email = strip_tags(@$_POST['email']);
$email_exist_check = mysqli_query($connect, "SELECT * FROM accounts WHERE email='$desired_email'") or die(mysql_error());
$email_exist = mysqli_num_rows($email_exist_check);
if ($email_exist == 0) {
    //performs insert query

    } else {

header('Content-type: application/json');           
$res['status'] = 'error';    

echo json_encode($res);  

            }

非常感谢任何帮助。我是jQuery和ajax的新手并使用json

1 个答案:

答案 0 :(得分:0)

因为您已经返回了json数组,所以即使检查电子邮件也是无效的。您需要在ajax函数中成功处理响应数据。错误回调仅在服务器在标头上返回状态代码时才起作用(它不是响应数据中的状态),我称之为解决方案1 ​​。在解决方案2 中,我通过返回PHP代码中的标头来解决它。

解决方案1:在客户端(javascript)上解决它

//...
success: function(res){
// Use json parse method to parse the response data if it is string.
// If you have been to set dataType: 'json', it's ok. Can ignore this comment & code.
// res = JSON.parse(res);

status = res.status;

if(status == 'error'){
//Process the error in here
}
}
//...

完整的ajax功能示例:

$.ajax({
                url: 'index.php',
                data: {email: 'vuong@gmail.com'},
                method: 'POST',
                dataType: 'json',
                success: function(res){
                    if(res.status === 'error'){
                        console.log('Error!!!');
                    } else{
                        console.log('Success!!!');
                    }
                }
            });

这是我工作场所的工作!

My development Network tab on Chrome

解决方案2:在服务器(php)上解决它

// Add it to before `echo` line
header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error', true, 500);

您只需要在两者中选择一次。祝你好运!

很抱歉,因为我的英语不好。