在线托管时,PHP文件的JSON响应出错

时间:2015-09-02 09:25:32

标签: php android json

if($tag == 'signin'){
    // check for user
    $email = mysql_real_escape_string(trim($_POST['username']));
    $password = mysql_real_escape_string(trim($_POST['password']));

    if(isset($email) && !empty($email) && isset($password) && !empty($password)){
        $result = getUserByEmailAndPassword($email, $password);
        if ($result != false) {
            // user found
            $response["error"] = FALSE;
            $response['uid'] = $result['uid'];
            $response['email'] = $result['email'];
            $response['username'] = $result['username'];
            $response['password'] = $result['password'];
            $response['endyear'] = $result['endyear'];
            $response['phone'] = $result['phone'];
            $response['currentyear'] = $result['currentyear'];
            $response['currentsem'] = $result['currentsem'];
            echo json_encode($response);
        } else {
            // user not found
            // echo json with error = 1
            $response["error"] = TRUE;
            $response["error_msg"] = "Incorrect email or password!";
            header('Content-Type: application/x-www-form-urlencoded');
            echo json_encode($response);
        }           
    }else{
        $response["error"] = TRUE;
        $response["error_msg"] = "Required parameter 'username' or 'password' is missing!";
        echo json_encode($response);
    }
} 

我在我的API上使用上面的PHP代码

我使用标题('Content-Type:application / x-www-form-urlencoded');在正确的地方?

此外,当我在chrome中的Advanced REST客户端上检查此请求时,请求就可以了。回复如下:

{"tag":"signin","error":false,"uid":"10","email":"example@exmaple.com","username":"jammy","password":"40be4e59b9a2a2b5dffb918c0e86b3d7","endyear":null,"phone":null,"currentyear":null,"currentsem":null}

但是,当我在任何在线响应检查器上运行相同的操作时,响应都是垃圾HTML。与我在线托管的应用程序相同

我注意到Chrome扩展默认情况下将Content-Type设置为application / x-www-form-urlencoded

当我在localhost上的xampp上运行我的应用程序时,相同的代码工作正常,但是,我在线上传后,我正面临这个问题

有人可以帮我弄清楚我做错了吗

2 个答案:

答案 0 :(得分:1)

这不是强制性的,但如果您打算返回JSON,则右侧标题应为

header('Content-Type: application/json');

否则,响应的接收者可能会或可能不会将身体响应解释为JSON。

答案 1 :(得分:0)

我能够找到问题的根本原因。我对代码做了很多更改,后来才意识到这是由于MySQL数据库表

我在本地使用的InnoDB引擎上创建的表,而我的托管服务提供商则在MyISAM引擎上提供。

通过导入SQL文件创建的所有表都将引擎设置为MyISAM。我使用InnoDB引擎在不同的提供商上托管表格,一切似乎都运行正常。

感谢大家尝试提供帮助