angularjs http post 到 json 特定元素的数组
angularjs http post to json array at specific element
我正在尝试找到一种使用新元素更新服务器上文件的最佳方法。我尝试查看 http post/put 但我收到错误消息并且不确定如何解决此问题。
我的http get方法没问题,不是环境问题
根据这里的评论是补充信息,我也更正了 json 文件格式。
开发环境:
Visual Studio 2013,.net 4.5,iis
json 数据文件位于 Visual studio 解决方案下的其中一个文件夹中。
但是,我只使用 angular 功能来开发这个单页应用程序,所以到目前为止我的代码中没有 asp.net 功能。
我必须添加才能访问解决方案中的 json 文件。
我有一个简单的车主应用程序,它使用 http get 从文件源的以下数组加载:
owners: [{
"name": "name1",
"age": 29,
"cars": [
{
"carmodel": "tyota",
"make": 2000
},
{
"carmodel": "ford",
"make": 2001
}
]
},
{
"name": "person1",
"age": 50,
"cars": [
{
"carmodel": "ford",
"make": 2011
}
]
}
]
来自 UI 我得到了一个新的汽车对象 "person1"
car: {
"carmodel": "BMW",
"make": 2015
}
我想使用 httppost 或任何其他最佳实践方法将其添加到文件中。
我有一个保存函数,它抛出 post 错误:405(方法不允许)
$scope.save = function(owner, car, $http)
{
$scope.owners[1].cars.push(car);
// above is hard coded, how can filter owners with owner object?
$http.post('url',$scope.owners);
}
我想知道服务器上的最佳实践更新文件是什么。如有任何帮助,我们将不胜感激。
首先,您的 JSON 是不正确的,因为您定义的所有者对象具有重复的 keys/variables。我想你希望车主像你的车一样排列。
如果我们谈论最佳实践,我不建议在您的服务器上保存文件并使用 POST 请求更新它,因为这将允许任何人 POST到您的服务器并弄乱您的文件。我会改用数据库,或者只是在 运行 时将 JSON 保存在服务器的内存中。要查看的数据库包括 MySQL 和 MongoDB。他们很容易访问并且有很多社区支持。
为了更好地理解您的问题,我们需要知道 tool/technology 您使用什么来提供此端点。 (Node/.NET/etc.)知道OS也有帮助,但不一定重要。
理想情况下,所有者应该是一个对象数组,例如:
owners: [{
"name": "name1",
"age": 29,
"cars": [
{
"carmodel": "tyota",
"make": 2000
},{
"carmodel": "ford",
"make": 2001
}]
}, {
"name": "person1",
"age": 50,
"cars": [
{
"carmodel": "ford",
"make": 2011
}]
}];
然后假设您需要更新名为 person1
的人的详细信息,将新车添加到列表中,请执行以下操作:
汽车 = {"carmodel": "anymodel", "make": 2012};
$scope.owners[1].cars.push(汽车);
$http.post(url, $scope.owners);
此外,必须遵循 RESTful APIS 最佳实践并使用 PATCH 更新任何值
每个所有者可以有不同的端点,例如 /owner/:id
然后就$http({method:'PATCH', url:'/owner/1', data:data})
此问题已通过启用 CORS 解决。这是另一个 Whosebug 问题的 link:
jQuery .ajax() POST Request throws 405 (Method Not Allowed) on RESTful WCF
我正在尝试找到一种使用新元素更新服务器上文件的最佳方法。我尝试查看 http post/put 但我收到错误消息并且不确定如何解决此问题。 我的http get方法没问题,不是环境问题
根据这里的评论是补充信息,我也更正了 json 文件格式。
开发环境: Visual Studio 2013,.net 4.5,iis
json 数据文件位于 Visual studio 解决方案下的其中一个文件夹中。 但是,我只使用 angular 功能来开发这个单页应用程序,所以到目前为止我的代码中没有 asp.net 功能。 我必须添加才能访问解决方案中的 json 文件。
我有一个简单的车主应用程序,它使用 http get 从文件源的以下数组加载:
owners: [{
"name": "name1",
"age": 29,
"cars": [
{
"carmodel": "tyota",
"make": 2000
},
{
"carmodel": "ford",
"make": 2001
}
]
},
{
"name": "person1",
"age": 50,
"cars": [
{
"carmodel": "ford",
"make": 2011
}
]
}
]
来自 UI 我得到了一个新的汽车对象 "person1"
car: {
"carmodel": "BMW",
"make": 2015
}
我想使用 httppost 或任何其他最佳实践方法将其添加到文件中。
我有一个保存函数,它抛出 post 错误:405(方法不允许)
$scope.save = function(owner, car, $http)
{
$scope.owners[1].cars.push(car);
// above is hard coded, how can filter owners with owner object?
$http.post('url',$scope.owners);
}
我想知道服务器上的最佳实践更新文件是什么。如有任何帮助,我们将不胜感激。
首先,您的 JSON 是不正确的,因为您定义的所有者对象具有重复的 keys/variables。我想你希望车主像你的车一样排列。
如果我们谈论最佳实践,我不建议在您的服务器上保存文件并使用 POST 请求更新它,因为这将允许任何人 POST到您的服务器并弄乱您的文件。我会改用数据库,或者只是在 运行 时将 JSON 保存在服务器的内存中。要查看的数据库包括 MySQL 和 MongoDB。他们很容易访问并且有很多社区支持。
为了更好地理解您的问题,我们需要知道 tool/technology 您使用什么来提供此端点。 (Node/.NET/etc.)知道OS也有帮助,但不一定重要。
理想情况下,所有者应该是一个对象数组,例如:
owners: [{
"name": "name1",
"age": 29,
"cars": [
{
"carmodel": "tyota",
"make": 2000
},{
"carmodel": "ford",
"make": 2001
}]
}, {
"name": "person1",
"age": 50,
"cars": [
{
"carmodel": "ford",
"make": 2011
}]
}];
然后假设您需要更新名为 person1
的人的详细信息,将新车添加到列表中,请执行以下操作:
汽车 = {"carmodel": "anymodel", "make": 2012}; $scope.owners[1].cars.push(汽车); $http.post(url, $scope.owners);
此外,必须遵循 RESTful APIS 最佳实践并使用 PATCH 更新任何值
每个所有者可以有不同的端点,例如 /owner/:id
然后就$http({method:'PATCH', url:'/owner/1', data:data})
此问题已通过启用 CORS 解决。这是另一个 Whosebug 问题的 link: jQuery .ajax() POST Request throws 405 (Method Not Allowed) on RESTful WCF