我有一个使用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
)
非常感谢您的帮助
答案 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结果。