2016-01-08 4 views
0

В моем контроллере я построил GetUsersByJson Действие:

public ActionResult GetUsersByJson() 
    { 
     DataLayer dal = new DataLayer(); 
     return Json(dal.Users.ToList<User>(), JsonRequestBehavior.AllowGet); 
    } 

dal.Users.ToList<User>() получающих пользователь из моей базы данных, этот метод хорошо работает, и полученный JSON является действительным.

Тогда в сценарии я сделал:

$scope.load = function() { 
       $http({ method: "GET", url: "GetUsersByJson" }). 
       success(function (data, status, headers, config) { 
        $scope.users = data; 
       }); 
      }; 
$scope.load(); 

но это не входит в функции успеха.

+2

Не следует ли URL быть "/ GetUsersByJson"? Кроме того, ваши параметры успеха не соответствуют типу, возвращаемому методом (я мог ошибаться, но это будет верно, это просто jQuery) –

+0

Я сделал то же самое на других страницах, например ViewProducts, и он работает. Кстати, я установил точку останова в GetUsersByJson, и он достиг ее, и json действителен – Erez

+1

Затем добавьте функцию ошибки, и, скорее всего, она будет достигнута с какой-то информацией –

ответ

1

Попробуйте использовать .then вместо .success See this.

+0

По-прежнему не работает – Erez

+0

пояснение Почему большая часть обучения и поможет ассеру вернуться с аналогичными проблемами в будущем. Это также поможет опубликовать, где вы сделаете замену для лучшей удобочитаемости для людей, ссылающихся на этот вопрос в будущем. Помощь первому пользователю - это только первая цель любого ответа. – user314321

+0

Попробуйте добавить обработчик ошибок, а также второй обратный вызов в. Then. Посмотрите, дает ли она некоторую ошибку. – tk17aug

0

вместо

success(function (data, status, headers, config) { 
       $scope.users = data; 
      }); 

Попробуйте

.then(function (data) { 
       $scope.users = data; 
      }); 
+0

Все еще не работает – Erez

1

Вы были неправильно URL в вашем $http.get называть это должно быть /MyController/GetUsersByJson по умолчанию маршрут уже существует в RouteConfig.cs.

Также вам необходимо использовать .then вместо .success/.error, так как они $http callbacks are deprecated.

Код

$scope.load = function() { 
    $http({ method: "GET", url: "/MyController/GetUsersByJson" }) 
    .then(function (response) { 
     $scope.users = response.data; 
    }, function(error){ 
     console.log(error); //this will print error in console. 
    }); 
}; 
$scope.load(); 
+0

Пробовал, что тоже, такой же результат. И в других представлениях я сделал то же самое, что и в вопросе, например: $ http ({method: "GET", url: "GetProductsByJsonForView"}). успех (функция, данные, состояние, заголовки, конфиг) { $ scope.Products = data; $ scope.lock = false; }); и он работал. – Erez

+0

какое вы имя контроллера MVC? и вы проверили консоль разработчика (нажав F12), есть ли какая-нибудь ошибка? –

+0

SignUpController. И я поместил отладчик в код и последовал за ним, но кроме точек останова, я не знаю, как его использовать .. первый раз я веб-программирование – Erez

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