0

我有一个页面locations.aspx,它在locations.aspx/getData 中有一个方法。当我使用代码时

$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 调用标头是

请求网址:localhost:41796/locations.aspx/getData

请求方法:POST

状态码:200 OK

请求标头view source

接受:应用程序/json,文本/javascript,/;q=0.01

内容类型:应用程序/json;字符集=utf-8

Response Headersview source Cache-Control:private, max-age=0

连接:关闭

内容长度:270

内容类型:应用程序/json;字符集=utf-8

我的 $http 标头是

请求网址:localhost:41796/locations.aspx/getData

请求方法:GET

状态码:200 OK

请求标头视图已解析

获取 /locations.aspx/getData HTTP/1.1

主机:本地主机:41796

连接:保持活动

响应标头视图已解析

HTTP/1.1 200 正常

服务器:ASP.NET 开发服务器/10.0.0.0

缓存控制:私有

内容类型:文本/html;字符集=utf-8

内容长度:7177

连接:关闭

4

1 回答 1

1

根据上面的讨论,您似乎正在使用 ASP.NET 并遇到了特定的问题。

ASP.NET 有时会非常挑剔它会解析什么和不会解析什么——尤其是当涉及到 MVC 时(你似乎没有在这里使用它,但也许 [WebMethod] (我假设你正在使用)有同样的问题)。

您可以以相同的方式$.ajax使用 Angular,而不是弄乱 jQuery :$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#Parameters 了解更多信息。

于 2013-04-03T20:45:31.380 回答