我有一个使用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结果。