запрос ajax и неопределенный - PullRequest
0 голосов
/ 29 марта 2012

У меня следующий код js:

var ret;

$.ajax({
    type: 'GET',
    url: '/Pay/Build64/',
    dataType: 'json',
    complete: function(response) {
        ret = response.Message;            
    },
    async: false
});
alert(ret);    

Мое действие:

public JsonResult Build64()
        {
            return Json(new
            {
                Message = "Test"
            });
        }

Вызывается Build64.Но ret не определено.Где ошибка?

Ответы [ 2 ]

2 голосов
/ 29 марта 2012

Каждый раз, когда вы возвращаете JsonResult, вы должны указать JsonRequestBehavior.AllowGet , иначе это приведет к ошибке, для демонстрации см. этот код контроллера ссылок блога.

0 голосов
/ 29 марта 2012

Проблема, с которой вы сталкиваетесь, связана с использованием complete, где вы должны использовать success.

Если вы проверяете документацию , следующие поверхности:

  • Обратный вызов complete передается jqXHR в качестве первого аргумента
  • В то время как обратный вызов success / done получает data (фактические данные ответа) какпервый аргумент.

Поскольку вы используете complete, response.Message отображается на (неопределенное!) свойство объекта jqXHR.

Решение вашегопроблема заключается в использовании обратного вызова success - или, что еще лучше, done, поскольку в jQuery 1.8 будет удалено success.

$.ajax({
    type: 'GET',
    url: '/Pay/Build64/',
    dataType: 'json',
    async: false
}).done(function(response) {
    alert('AJAX complete!');
    ret = response.Message;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...