angularjs将数据成功发送到php后出现ajax结果解析错误
我有一个angular应用程序使用jquery for the ajax(我使用jquery for the$http在这个问题上取得了一些进展)。我正在尝试将json数据发送到php并成功完成(php读取它并通过标头返回数据)。这里我的问题是$。ajax无法识别成功,它失败并返回响应的解析错误 以下是我的javascript:angularjs将数据成功发送到php后出现ajax结果解析错误,php,jquery,ajax,json,angularjs,Php,Jquery,Ajax,Json,Angularjs,我有一个angular应用程序使用jquery for the ajax(我使用jquery for the$http在这个问题上取得了一些进展)。我正在尝试将json数据发送到php并成功完成(php读取它并通过标头返回数据)。这里我的问题是$。ajax无法识别成功,它失败并返回响应的解析错误 以下是我的javascript: function loginUser() { var target = "../data/user.php"; var data
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文件中,您可以使用$\u POST变量引用您的数据
$user = array(
'username' => $_POST['userName'],
'password' => $_POST['password'],
'action' => $_POST['action']
);
echo json_encode($user);
或
该响应不是有效的JSON,因此会出现解析错误。如果客户端需要JSON,而您向它发送了一个PHP变量转储,那么它将不知道如何解析它
坦白地说,我不明白你的代码应该做什么。看起来您正在尝试镜像请求中发送的数据。尝试使用$apply()在角度范围上应用jQuery ajax结果。为什么要使用
$。ajax
使用Angular的$http
如果设置了正确的头,则不需要使用php://input
。如果将标题设置为Content-Type:application/x-www.form-urlencoded
,则只需在另一端使用常规php变量($\u-GET,$\u-POST,$\u-REQUEST)。如果您要发送JS对象,只需在发送->$.param(data)
时使用jQuery的param函数即可。目前,我正在尝试实现双向的成功通信。一步一个步骤。@user2174484请记住,如果客户端需要JSON,您需要发回JSON。您可以执行类似于echo json_encode(数组('test'))的操作代码>测试响应。非常感谢您的响应,我终于从angular获得了成功的响应。现在唯一剩下的事情是,我无法找到angular想要解析json的方法。我尝试了fromJson(),但无法将其分解为单独的值(例如,response[0]。username(抛出未定义的错误)、response.username(未定义的无错误))尝试将响应输出到控制台,以便查看可用的对象。您应该能够像任何其他JS对象一样使用点符号引用对象。如果看不到要查找的内容,请尝试将response.data输出到控制台。
echo json_encode($_POST);