在这里,我们将给大家分享关于如何使用Angular将JSON和文件发布到Web服务?的知识,让您更了解angularjsonp的本质,同时也会涉及到如何更有效地angularjs–从Angular发布
在这里,我们将给大家分享关于如何使用Angular将JSON和文件发布到Web服务?的知识,让您更了解angular jsonp的本质,同时也会涉及到如何更有效地angularjs – 从Angular发布到.net WebAPI、angularjs – 使用Angular.js从Web服务获取数据、angularjs – 如何使用Angular Js声明一个全局变量?、angularjs – 如何使用angular JS设置下拉列表控件的选定选项的内容。
本文目录一览:- 如何使用Angular将JSON和文件发布到Web服务?(angular jsonp)
- angularjs – 从Angular发布到.net WebAPI
- angularjs – 使用Angular.js从Web服务获取数据
- angularjs – 如何使用Angular Js声明一个全局变量?
- angularjs – 如何使用angular JS设置下拉列表控件的选定选项
如何使用Angular将JSON和文件发布到Web服务?(angular jsonp)
如何使用AngularJS发送POST请求?JSON部分是必需的,但文件不是必需的。我已经根据其他博客文章尝试过此方法,但是它不起作用。我收到一个
错误的请求400错误 。
200点正确答案将被添加
var test = { description:"Test", status: "REJECTED"};var fd = new FormData();fd.append(''data'', angular.toJson(test));return $http.post(''/servers'', fd, { transformRequest: angular.identity, headers: { ''Content-Type'': undefined }});
答案1
小编典典我已经用一个简单的Spring后端测试了您的代码,并且工作正常:
@Controllerpublic class FileController { @ResponseBody @RequestMapping(value = "/data/fileupload", method = RequestMethod.POST) public String postFile(@RequestParam(value="file", required=false) MultipartFile file, @RequestParam(value="data") Object data) throws Exception { System.out.println("data = " + data); return "OK!"; }}
我已将您的客户端代码与angular v1.1.5一起使用:
var test = { description:"Test", status: "REJECTED"};var fd = new FormData();fd.append(''data'', angular.toJson(test));//remove comment to append a file to the request//var oBlob = new Blob([''test''], { type: "text/plain"});//fd.append("file", oBlob,''test.txt'');return $http.post(''/data/fileupload'', fd, { transformRequest: angular.identity, headers: { ''Content-Type'': undefined }});
请求看起来像这样(从Chrome控制台的“网络”标签中复制):
Request URL:http://localhost:8080/data/fileuploadRequest Method:POSTStatus Code:200 OKRequest HeadersPOST /data/fileupload HTTP/1.1Host: localhost:8080...Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryEGiRWBFzWY6xwelbReferer: http://localhost:8080/...Request Payload------WebKitFormBoundaryEGiRWBFzWY6xwelbContent-Disposition: form-data; name="data"{"description":"Test","status":"REJECTED"}------WebKitFormBoundaryEGiRWBFzWY6xwelb--
响应200 OK,控制台将输出预期的结果: {"description":"Test","status":"REJECTED"}
angularjs – 从Angular发布到.net WebAPI
我的API如下:
public class UserController : APIController { [HttpPost] public void disconnect(Models.Users.User model) { } }
请求标头是:
POST /siteapi/User/disconnect HTTP/1.1 Host: rouge2 Connection: keep-alive Content-Length: 125 Accept: application/json,text/plain,*/* Origin: http://rouge2 X-Requested-With: XMLHttpRequest User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.31 (KHTML,like Gecko) Chrome/26.0.1410.64 Safari/537.31 Content-Type: application/json;charset=UTF-8 Referer: http://rouge2/Users Accept-Encoding: gzip,deflate,sdch Accept-Language: en-US,en;q=0.8 Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3 Cookie: .ASPXAUTH=115C6015BDD5C1A9D111B0A9FBF05294B73287328566F65CB1BCB457DF206EF0916D4615B5914EB443AA567E860742AC14EAA2951B9C327260C4F00649694260A1B3960771FB6675FEE8F3E68B0BB46436020ACAB33ECE0D3E70B50D6569E52B27F69161762C10C19A806A12D3254DF60EF4758DEDCA529A91CB36C74B7FA7F4; __RequestVerificationToken=Rp4Vu8R67ziDNc36DoOLZH7KmEfumig1zFDmYiFWHTsWyf2I037xJQydcmLtOfaJ3ccc8GEZXmHoa8LBRusxKFRYVoy27GuFEfNhKKYS_hUysjwCjmsxw5OCK3RKsiXIAh1Gbi0PxcdqBfzctSJn9g2
而请求有效载荷:
{"Id":3,"FirstName":"Test","LastName":"User","Username":"testuser","IsApproved":true,"IsOnlineNow":true,"IsChecked":true}
如果我在fiddler中测试,在身体中发布相同的JSON字符串,则模型将按预期正确填充。
是否有一个内置的模型绑定器,这将在这种情况下工作,或预先构建在我可以使用的地方?
还是有人可以指点一个工作示例的方向?
$http module
。
以下是一个例子:
<!DOCTYPE html> <html ng-app> <head> <Meta name="viewport" content="width=device-width" /> <title>Index</title> </head> <body> <div ng-controller="TestController"> <ul ng-model="person"> <li>FirstName: {{person.FirstName}}</li> <li>LastName: {{person.LastName}}</li> <li>UserName: {{person.Username}}</li> <li>IsApproved: {{person.IsApproved}}</li> <li>IsOnlineNow: {{person.IsOnlineNow}}</li> <li>IsChecked: {{person.IsChecked}}</li> </ul> </div> <script type="text/javascript" src="~/scripts/angular.min.js"></script> <script type="text/javascript"> function TestController($scope,$http) { var data = { "Id": 3,"FirstName": "Test","LastName": "User","Username": "testuser","IsApproved": true,"IsOnlineNow": true,"IsChecked": true }; $http.post( '/api/values',JSON.stringify(data),{ headers: { 'Content-Type': 'application/json' } } ).success(function (data) { $scope.person = data; }); } </script> </body> </html>
假设以下控制器:
public class ValuesController : ApiController { [HttpPost] public User Post(User model) { return model; } }
angularjs – 使用Angular.js从Web服务获取数据
数据来自Web服务正确,但我不能在控制器内使用它.
这是为什么?
角度代码:
var booksJson; var app = angular.module('booksInventoryApp',[]); // get data from the WS app.run(function ($http) { $http.get("https://SOME_API_PATH").success(function (data) { booksJson = data; console.log(data); //Working }); }); app.controller('booksCtrl',function ($scope) { $scope.data = booksJson; console.log($scope.data); //NOT WORKING });
HTML:
<section ng-controller="booksCtrl"> <h2 ng-repeat="book in data">{{book.name}}</h2> </section>
解决方法
此外,Web服务返回的对象不是数组.所以你的ng-repeat应该是这样的:在data.books中预订
这是一个工作示例:
var app = angular.module('booksInventoryApp',[]); app.controller('booksCtrl',function($scope,$http) { $http.get("https://whispering-woodland-9020.herokuapp.com/getAllBooks") .then(function(response) { $scope.data = response.data; }); });
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <article ng-app="booksInventoryApp"> <section ng-controller="booksCtrl"> <h2 ng-repeat="book in data.books">{{book.name}}</h2> </section> </article>
angularjs – 如何使用Angular Js声明一个全局变量?
常量
var app = angular.module('myApp',[]); app.constant('appName','Application Name'); app.controller('TestCtrl',['appName',function TestCtrl(appName) { console.log(appName); }]);
值
var app = angular.module('myApp',[]); app.value('usersOnline',0); app.controller('TestCtrl',['usersOnline',function TestCtrl(usersOnline) { console.log(usersOnline); usersOnline = 15; console.log(usersOnline); }]);
http://ilikekillnerds.com/2014/11/constants-values-global-variables-in-angularjs-the-right-way/
angularjs – 如何使用angular JS设置下拉列表控件的选定选项
这是我的html的下拉列表控件
<select ng-required="item.id==8 && item.quantity > 0" name="posterVariants" ng-show="item.id==8" ng-model="item.selectedVariant" ng-change="calculateServicesSubTotal(item)" ng-options="v.name for v in variants | filter:{type:2}"> </select>
之后它被填充我得到
<select ng-options="v.name for v in variants | filter:{type:2}" ng-change="calculateServicesSubTotal(item)" ng-model="item.selectedVariant" ng-show="item.id==8" name="posterVariants" ng-required="item.id==8 && item.quantity > 0"https://www.jb51.cc/tag/required/" target="_blank">required"> <option value="?" selected="selected"></option> <option value="0">set of 6 traits</option> <option value="1">5 complete sets</option> </select>
如何设置value =“0”的控件被选择?
如果variant是一个对象数组,item.selectedVariant必须设置为其中一个对象。我不知道你的范围内有哪些信息,但这里有一个例子:
JS:
$scope.options = [{ name: "a",id: 1 },{ name: "b",id: 2 }]; $scope.selectedOption = $scope.options[1];
HTML:
<select data-ng-options="o.name for o in options" data-ng-model="selectedOption"></select>
这将留下“b”项目被选择。
今天关于如何使用Angular将JSON和文件发布到Web服务?和angular jsonp的讲解已经结束,谢谢您的阅读,如果想了解更多关于angularjs – 从Angular发布到.net WebAPI、angularjs – 使用Angular.js从Web服务获取数据、angularjs – 如何使用Angular Js声明一个全局变量?、angularjs – 如何使用angular JS设置下拉列表控件的选定选项的相关知识,请在本站搜索。
本文标签: