我想发送一些表单数据,使用 Json 格式的 AngularJS HTTP POST,以便它可以从 NodeJS 和 MongoDB 移植到 Apache MySQL PHP 和从 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
}
我不想创建几个函数来发送各种不同的表单。用户名和密码只是最基本的。
我一直在寻找一种方法来一次将所有表单传递给我的请求。 我不想为此使用 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')。
最佳答案
如果你想要一个对象而不是数组,你应该使用 jQuery.serialize()
而不是 jQuery.serializeArray()
。
这将创建一个如下所示的 JSON 对象:
{
username: "The Master User",
password: "password",
ajaxKey: "Mykey"
}
您使用标准输入有特定原因吗?这是一个主要的矫枉过正,您可以简单地使用超全局 $_POST
,它是一个关联数组:
if($_POST['ajaxKey'] == "Mykey"){
// do something here
}
关于javascript - 如何用 Angular 替换 $ ('form' ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48194572/