2013-04-03 5 views
0

У меня есть страница locations.aspx, у которой есть метод позади нее в location.aspx/getData. когда я использую кодугловой js http-запрос от метода aspx

$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 он загружает HTML-страницу страницы ASPX, но не имеет доступа к методу. Я могу получить доступ к методу, используя

$.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> 

После Аякса allItems вызова массив имеет элемент в нем, но мнение никогда обновлений.

Мои заголовки Ajax вызова являются

Запрос URL: локальный: 41796/locations.aspx/GetData

Запрос Метод: POST

код Статус: 200 OK

Запрос Headersview источник

Принять: приложение/json, текст/javascript, /; q = 0,01

Content-Type: application/json; кодировка = UTF-8

Response Headersview источник Cache-Control: частный, макс возраста = 0

соединения: Закрыть

Content-Length: 270

Content-Type: применение/JSON; кодировка = UTF-8

и мои $ заголовки HTTP являются

Запрос URL: локальный: 41796/locations.aspx/GetData

Метод

запроса: GET

код Статус: 200 OK

Запрос Headersview разобраны

GET /locations.aspx/getData HTTP/1.1

Ведущий: локальный: 41796

соединения: держать-жив

Response Headersview разобраны

HTTP/1.1 200 OK

сервера: ASP.NET Development Server/10.0.0.0

Cache-Control: частный

Content-Type: Текст/html; кодировка = UTF-8

Content-Length: 7177

соединение: Закрыть

+0

Я угадываю '$ http.jsonp' по умолчанию' type: "GET" ', и у вас нет метода getData, открытый через GET? Что происходит, когда вы нажимаете 'locations.aspx/getData' в браузере, вы получаете HTML без вызова метода? – Langdon

+0

Я редактировал свой вопрос, я смотрел в заголовках, и я вижу, что они не то же самое, что может дать мне альтернативный ответ? Я также попытался getData в браузере, и он вызвал html без вызова метода. – willJk

ответ

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

Смежные вопросы