2012-12-05 32 views
4

這裏是fiddle參考破碎的代碼。當我嘗試它時,它應該發送給它的服務器沒有響應,這導致我相信它沒有收到來自我的應用程序的任何流量。問題是否明顯?如果不是,我可以使用哪些故障排除方法來調查問題?爲什麼不是我的函數發送POST

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

好問題,但是標題缺少「angularjs」。 – Wiseman

回答

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"}} 

東西你可以閱讀更多$資源here

+0

好吧,現在我得到「資源加載失敗」,但沒有從我的服務器響應。我想如果這是我的服務器的問題,它會抱怨一個不好的請求,或類似的東西。無論如何,比我之前更接近解決方案,謝謝。 :) –

+0

所以它似乎沒有發送流量到端口3000.我已經修改我的服務器在端口80上進行監聽,並且一旦我解決了更大的問題,就會解決這個問題。 –

+0

此外,正在發送幾個不需要的訪問控制請求頭。刪除這些可能會解決一個大問題,我要去調查一下。 –

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(); 

是的,你可以提前創建資源所以每次單擊按鈕時都不會重新創建它。

+0

這並沒有解決問題,但提出了一些東西(也許都是?),這是我的代碼錯了。 –

相關問題