我希望使用Json格式的AngularJS HTTP POST发送一些表单数据,因此它可以从NodeJS和MongoDB移植到Apache MySQL PHP中。
所以我认为Json是所有这一切的共同基础。
我注意到如果我们将原始Json数据发布到PHP,我们就无法使用 $ _ POST 变量。
我们必须使用;
$postData = file_get_contents("php://input");
并参考这样的数据
$jsonData = json_decode($postData);
$jsonData->someValueName
我在Angular中的HTTP请求是以json格式发送信息。
Ex以纯文本形式;
{username:"Charlie", password:"Delta"}
这些值来自Angular模型,使用$ http
发送 $http({
method: 'post',
url: 'ajax-processor.php', // could be Node as well
headers: {'Content-Type': 'Content-Type: application/json'},
data: { username: $scope.username, password:$scope.password}
}).then(function successCallback(response) {
// deal with response
}
我不想做几个函数来发送所有类型的diffrents表单。用户名和密码只是基本的。
我一直在寻找一种方法将所有表单一次性传递给我的请求。 我不想为此使用Jquery。即使我真的喜欢我能够实现这一目标的事实。
实施例
$http({
method: 'POST',
url: 'ajax-processor.php',
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
data: $('form').serializeArray() <-----CHANGED
}).then(function successCallback(response) {
// deal with response
}
现在在这种情况下 serializeArray()输出urlencode;
username=Charlie&password=Delta&etc=...
serialize()输出一个对象;
[{
0: {name: "username", value: "Charlie"}
1: {name: "password", value: "Delta"}
}]
那么如何用Angular替换$('form')。
答案 0 :(得分:1)
如果你想要一个对象而不是一个数组,你应该使用jQuery.serializeArray()
而不是{
username: "The Master User",
password: "password",
ajaxKey: "Mykey"
}
。
这将创建一个如下所示的JSON对象:
$_POST
您使用标准输入的具体原因是什么?这是一个主要的矫枉过正,你可以简单地使用超级全局if($_POST['ajaxKey'] == "Mykey"){
// do something here
}
,这是一个关联数组:
{{1}}