angularjs-ajax在成功将数据发送到php后导致解析错误


angularjs ajax results parse error after successfully sending data to php

我有一个使用jquery处理ajax的angular应用程序(我在$http上使用jquery解决了这个问题(。我正在尝试将json数据发送到php并成功完成(php读取它并通过头返回数据(。我的问题是$.ajax无法识别成功,它失败并返回响应的解析错误。

这是我的javascript:

    function loginUser() {
        var target = "../data/user.php";
        var data = {
            "userName": "me",
            "userPass": "pass",
            "action": "login"
        };

        $.ajax({
            url: target,
            type: "POST",
            data: JSON.stringify(data),
            contentType: 'application/json; charset=utf-8',
            dataType: "json",
            success: function(data) {
                console.log(data);
            }
        }).fail(function(jqXHR, textStatus) {
            alert( "Request failed: " + textStatus );
        });
    }

这是我的php:

$data = file_get_contents("php://input");
$objData = json_decode($data);
print_r($objData);

以下是我在php:的标题中得到的响应

stdClass Object
(
    [userName] => me
    [userPass] => pass
    [action] => login
)

非常感谢的帮助

function loginUser($scope,$http,$log) {
    var target = "../data/user.php";
    var data = {
        "userName": "me",
        "userPass": "pass",
        "action": "login"
    };
    $http.post(target,$.param(data),{headers:{'Content-Type':'application/x-www-form-urlencoded'}}).then(function(response){
        // success stuff here
    },function(response){
        // failed stuff here
        $log.log(response);
    });
}

然后,在您的PHP文件中,您可以使用$_POST var.引用您的数据

$user = array(
    'username' => $_POST['userName'],
    'password' => $_POST['password'],
    'action' => $_POST['action']
);
echo json_encode($user);

echo json_encode($_POST);

该响应不是有效的JSON,因此会出现解析错误。如果客户端期望JSON,而你向它发送了一个PHP变量转储,它将不知道如何解析它

坦率地说,我不明白你的代码应该做什么。看起来您正试图镜像回请求中发送的数据。

尝试使用$apply((在Angular作用域上应用jQuery ajax结果。