GVKun编程网logo

如何使用Angular将JSON和文件发布到Web服务?(angular jsonp)

13

在这里,我们将给大家分享关于如何使用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)

如何使用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

angularjs – 从Angular发布到.net WebAPI

我使用Angular $资源将模型发布到webapi端点,但Angular会发送请求有效内容中的数据,而不是JSON体或表单参数。结果,模型总是结束为null。

我的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服务获取数据

angularjs – 使用Angular.js从Web服务获取数据

我试图使用Angular从远程WS获取Json格式的数据,我遇到了一些麻烦.
数据来自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>

解决方法

您应该将$http.get放在控制器中.

此外,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声明一个全局变量?

angularjs – 如何使用Angular Js声明一个全局变量?

我想要一个可以在所有控制器中使用但不想为它创建一个服务的变量.它可能在角度js?
您可以使用 constants or values.

常量

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设置下拉列表控件的选定选项

angularjs – 如何使用angular JS设置下拉列表控件的选定选项

我使用Angular JS和我需要设置一个下拉列表控件使用angular JS的选择选项。原谅我,如果这是可笑的,但我是新的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 &amp;&amp; item.quantity &gt; 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”的控件被选择?

我希望我理解你的问题,但ng-model指令在控件中的选定项目和item.selectedVariant的值之间创建一个双向绑定。这意味着在JavaScript中更改item.selectedVariant,或更改控件中的值,将更新另一个。如果item.selectedVariant的值为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设置下拉列表控件的选定选项的相关知识,请在本站搜索。

本文标签: