我是AngularJS的新手,一开始,我想只使用AngularJS开发一个新的应用程序.
我正在尝试使用$http我的Angular App 对服务器端进行AJAX调用.
为了发送参数,我尝试了以下方法:
$http({
method: "post",
url: URL,
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
data: $.param({username: $scope.userName, password: $scope.password})
}).success(function(result){
console.log(result);
});
Run Code Online (Sandbox Code Playgroud)
这是有效的,但它也使用jQuery $.param.为了消除对jQuery的依赖,我尝试了:
data: {username: $scope.userName, password: $scope.password}
Run Code Online (Sandbox Code Playgroud)
但这似乎失败了.然后我尝试了params:
params: {username: $scope.userName, password: $scope.password}
Run Code Online (Sandbox Code Playgroud)
但这似乎也失败了.然后我尝试了JSON.stringify:
data: JSON.stringify({username: $scope.userName, password: $scope.password})
Run Code Online (Sandbox Code Playgroud)
我找到了这些可能的答案,但没有成功.难道我做错了什么?我相信,AngularJS会提供这个功能,但是如何?
在最新的beta 2版本中,我遇到了跨域POST请求命中Api控制器的问题.
Chrome(和其他浏览器)吐出:
OPTIONS http://api.hybridwebapp.com/api/values 400 (Bad Request)
POST http://api.hybridwebapp.com/api/values 404 (Not Found)
Run Code Online (Sandbox Code Playgroud)
它可能与此问题有关,但我已应用该解决方法和其他一些其他修补程序,例如web.config 添加
我一直在用这个敲打我的脑袋一段时间,所以我创建了一个解决方案来完全重现问题.
加载Web应用程序将有2个按钮,一个用于GET,一个用于POST,响应将出现在按钮旁边.GET有效.无法获得POST以成功返回.

我能够从Fiddler那里得到一个提示,但这没有任何意义,因为如果你看一下它的反应就包含了Access-Controll-Allow-Origin标题中的域:

解决方案中有一个名为"ConfigurationScreenshots"的文件夹,其中包含IIS配置(网站绑定)和项目属性配置的一些屏幕截图,以便尽可能轻松地帮助我:)
编辑:不要忘记将此条目添加到主机文件(%SystemRoot%\ system32\drivers\etc):
127.0.0.1 hybridwebapp.com api.hybridwebapp.com
Run Code Online (Sandbox Code Playgroud)
**状态:**似乎Chrome之类的某些浏览器允许我继续POST,无论OPTIONS响应中的错误消息如何(而其他像Firefox则没有).但我不认为这解决了.
查看它有的OPTIONS请求的Fidler截图
Access-Control-Allow-Origin:http://hybridwebapp.com
然而错误:
原产地http://hybridwebapp.com是不允许的
这完全是矛盾的,好像它忽略了标题.
我在使用nodeJS和Angular上传文件时遇到问题.
我找到了解决方案,但它只与Ajax有关,我不知道.有可能没有吗?
使用以下代码我收到此错误:
POST http://localhost:2000/database/sounds 413 (Payload Too Large)
Run Code Online (Sandbox Code Playgroud)
码:
HTML:
<div class="form-group">
<label for="upload-input">This needs to be a .WAV file</label>
<form enctype="multipart/form-data" action="/database/sounds" method="post">
<input type="file" class="form-control" name="uploads[]" id="upload-input" multiple="multiple">
</form>
<button class="btn-primary" ng-click="uploadSound()">UPLOAD</button>
</div>
Run Code Online (Sandbox Code Playgroud)
使用Javascript:
$scope.uploadSound = function(){
var x = document.getElementById("upload-input");
if ('files' in x) {
if (x.files.length == 0) {
console.log("Select one or more files.");
} else {
var formData = new FormData();
for (var i = 0; i < x.files.length; i++) {
var file = …Run Code Online (Sandbox Code Playgroud)