2015-01-16 92 views
0

我需要傳遞一個id並獲取相關的問題。 錯誤消息 - POST http://localhost:51949/API.asmx/GetAllQuestions/0 - 500(內部服務器錯誤)如何在angularjs中將參數傳遞給ASMX

Web服務正常工作,因爲我已經檢查了C#代碼的其他部分。現在,試圖從angularjs訪問它。這是正確的方式嗎?

app.js:

var app = angular.module('virtualApp', []); 

controller.js:

app.controller("virtualController", function ($scope, DataFactory) { 
$scope.categories=[]; 
$scope.GetAllQuestions = function (categoryId) { 
     DataFactory.GetAllQuestions(categoryId) 
     .success(function (data) { 
      $scope.categories = data; 
     }) 
     .error(function (error) { 
      alert(error.message); 
     }); 
    } 

$scope.GetAllQuestions(0); //to fire at page load 
}); 

services.js: EDIT

app.factory("DataFactory",function ($http) { 

     var urlBase = "http://localhost:51949/API.asmx/"; 
      var dataFactory = {}; 

      dataFactory.GetAllQuestionCategories = function (categoryId) { 

     return $http.post(urlBase + "GetAllQuestions", { categoryId: categoryId }) 
    .success(function (data, status, headers, config) {   
    }) 
    .error(function (data, status, headers, config) {   
    }); 
    return dataFactory; 
     }); 
+1

而當您調試您的Web服務以查看爲什麼得到異常時,該異常是什麼? –

+0

它沒有擊中web服務中的調試點 – Qwerty

回答

1

我想與你的代碼的問題是你逝去的ID作爲網址的一部分,而不是把它傳遞在Ajax請求的數據ID

不要在URL傳遞數據,如下面

//do not attach categoryId 
urlBase + "GetAllQuestions/" + categoryId 

,而不是它傳入的請求數據的參數數據等作爲下面的代碼

data: { test: 'test' } 

和URL將被urlBase + "GetAllQuestions


var req = { 
method: 'POST', 
url: 'http://example.com', 
headers: { 
    'Content-Type': undefined 
}, 
data: { test: 'test' }, 
} 

$http(req).success(function(){...}).error(function(){...}); 

一件事你調用函數來獲得比使用Get方法,而不是Post方法的數據。

+0

有一種方法可以直接傳遞參數而不是'req'...對嗎? – Qwerty

+0

我這樣做:'返回$ http.get(urlBase +「GetAllQuestions」,{categoryId:categoryId});' – Qwerty

+0

@Qwerty - 是有辦法..這是傳遞數據查詢字符串和使用Get請求,而不是POST示例:urlBase +「GetAllQuestions?categoryId =」+ categoryId –

相關問題