2013-04-03 39 views
0

我有一個頁面locations.aspx,它在locations.aspx/getData中有一個方法。當我使用的代碼來自aspx方法的角度js http請求

$http.jsonp($scope.url) 
    .success(function (data, status, headers, config) { 
     alert(data); 
}).error(function (data, status, headers, config) { 
    $scope.status = status; 
}); 

與$ scope.url是locations.aspx /的getData它加載aspx頁面的HTML頁面,但不訪問的方法。我可以訪問該方法使用

$.ajax({ 
    type: "POST", 
    url: $scope.url, 
    data: {}, 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function (p) { 
    var temp = $.parseJSON(p.d); 
    $scope.allItems.push(temp); 
}, 
    error: function() { 
     alert('error'); 
    } 
}); 

但數據永遠不會更新或綁定在視圖端。在HTML的一個例子是

<select ng-model="selectLocation" id="selectLocation" ng-change="onLocationChange()"> 
         <option></option> 
         <option ng-repeat="l in allItems">{{l.location}}</option> 
</select> 

Ajax調用allItems陣確實有它的一個項目,但認爲從來沒有更新之後。

我的Ajax調用頭是

請求URL:本地主機:41796/locations.aspx /的getData

請求方法:POST

狀態代碼:200 OK

請求Headersview來源

接受:application/json,text/javascript,/; q = 0.01

Content-Type:application/json;字符集= UTF-8

響應Headersview源 緩存控制:私人,最大年齡= 0

連接:關閉

的Content-Length:270

內容類型:應用/ JSON;字符集= UTF-8

和我的$ HTTP頭

請求URL:本地主機:41796/locations.aspx /的getData

請求方法:GET

狀態代碼:200 OK

請求Headersview解析

GET /locations.aspx/getData HTTP/1.1

主機:本地主機:41796

連接:保持活躍

響應Headersview解析

HTTP/1.1 200 OK

服務器:ASP.NET開發服務器/ 10.0.0。0

Cache-Control:private

Content-Type:text/html;字符集= UTF-8

的Content-Length:7177

連接:關閉

+0

我猜'$ http.jsonp'默認爲'type:「GET」'而且你沒有通過GET公開getData方法?當你在瀏覽器中點擊'locations.aspx/getData'時會發生什麼,你會得到沒有被調用的方法的HTML嗎? – Langdon 2013-04-03 20:01:10

+0

我編輯了我的問題,我正在查看標題,我發現他們不一樣,這可能會給我的替代響應?我也嘗試過在瀏覽器中使用getData,它沒有調用方法就調出了html。 – willJk 2013-04-03 20:34:03

回答

1

基於上面的討論,似乎你正在使用ASP.NET運行與它的具體問題。

有時候ASP.NET可能會非常挑剔它將解析什麼和不會 - 尤其是當涉及到MVC(它不會顯示您在這裏使用,但也許[WebMethod] (我假設你正在使用)具有相同類型的問題)。

而是用jQuery的$.ajax搞亂的,可以以相同的方式使用角度的$http

$http({ 
    method: 'POST', 
    url: $scope.url, 
    contentType: 'application/json; charset=utf-8' 
}) 
.success(function (data, status, headers, config) { 
    alert(data); 
}) 
.error(function (data, status, headers, config) { 
    $scope.status = status; 
}); 

檢查這一點:http://docs.angularjs.org/api/ng $ HTTP#更多的信息參數。

+0

謝謝!我最終不得不把它作爲標題:{'Content-type':'application/json;字符集= UTF-8' }。我找不到任何好的文檔,但在搜索時很幸運 – willJk 2013-04-04 12:48:16