成功将数据发送到php后,angularjs ajax结果解析错误

时间:2014-08-08 18:13:00

标签: php jquery ajax json angularjs

我有一个使用jquery的角度应用程序用于ajax(我使用jquery为这个问题在$ http上做了一些进展)。我正在尝试将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
)

非常感谢您的帮助

3 个答案:

答案 0 :(得分:1)

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);

OR

echo json_encode($_POST);

答案 1 :(得分:0)

该响应无效JSON,因此您得到解析错误。如果客户端期望JSON并且您向它发送一个PHP变量转储,它将不知道如何解析它。

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

答案 2 :(得分:0)

尝试使用$ apply()在Angular范围上应用jQuery ajax结果。