这是参考破损代码的fiddle。当我尝试它时,它应该发送到的服务器没有响应,这使我相信它没有收到来自我的应用程序的任何流量。问题显而易见吗?如果没有,我可以使用哪些故障排除方法来调查问题?
stackoverflow希望我将我的代码包含在内,所以在这里。
index.html
<div ng-controller="DataEntryCtrl">
<form ng-repeat="entryField in entryFields">
<input type="text"
ng-model="entryField.fieldData"
placeholder="{{entryField.pHolder}}">
</form>
<input type="button" ng-click="sendJSON()" value="Object To JSON" />
<hr/>
{{res}}
<ul>
<li>ID: {{entryFields.id.fieldData}}</li>
<li>description: {{entryFields.description.fieldData}}</li>
<li>date: {{entryFields.date.fieldData}}</li>
</ul>
</div>
controller.js
'use strict';
/* Controllers */
var app = angular.module('Hubbub-FrontEnd', ['ngResource']);
app.controller('DataEntryCtrl', function($scope,$resource) {
$scope.entryFields = {
id: {pHolder:'ID goes here',fieldData:""},
description: {pHolder:'Description goes here',fieldData:""},
date: {pHolder:'Drop Dead Date goes here',fieldData:""}
};
$scope.showJSON = function() {
$scope.json = angular.toJson($scope.entryFields);
};
$scope.sendJSON = function() {
$scope.entry = angular.toJson($scope.entryFields);
$scope.res = $resource('http://10.64.16.6:3000/Create',
{create:{method:'POST'}},{params:$scope.entry});
};
});
答案 0 :(得分:3)
目前,每次用户点击按钮时,您都会创建相同的资源。
您可以做的是在控制器的某处创建服务
var Res = $resource('http://10.64.16.6:3000/res/:id', {id: '@id'});
然后,当用户单击该按钮时,创建一个新的资源实例并将其传递给您要发送的数据
$scope.sendJSON = function() {
$scope.entry = angular.toJson($scope.entryFields);
var r = new Res();
r.$save({params: $scope.entry});
};
继承自$save
并执行ngResource
请求的方法POST
。这是一个jsfiddle http://jsfiddle.net/jaimem/FN8Yg/19/
在开发人员工具中,请求方法将列为OPTIONS
,因为它来自jsfiddle。请求参数将是这些行
params:{"id":{"pHolder":"ID goes here","fieldData":"sdf"},"description":{"pHolder":"Description goes here","fieldData":"sdf"},"date":{"pHolder":"Drop Dead Date goes here","fieldData":"sdf"}}
您可以阅读更多$ resource here
答案 1 :(得分:1)
这个问题可能也很有用AngularJS performs an OPTIONS HTTP request for a cross-origin resource。您可能需要设置一些标题以允许跨源支持。
除此之外,我认为您在创建资源时可能还会损坏参数: -
$scope.res = $resource('http://10.64.16.6:3000/Create',
{create:{method:'POST'}},{params:$scope.entry});
尝试:
$scope.res = $resource('http://10.64.16.6:3000/Create', null,
{create:{method:'POST', params: $scope.entry}});
$scope.res.create();
是的,您可以提前创建资源,这样每次点击按钮时都不会重新创建资源。