обратный вызов getJSON не запускается

Я выполняю вызов, используя следующий скрипт, который вызывается по щелчку тега привязки.

   function GetToken(videoId) {
        debugger;
        var json = $.getJSON("/Vod/RequestAccessToken/"+videoId, function(result){
            alert("token recieved: " + result.token);
        });
   }

В серверном приложении я получаю вызов, поэтому я знаю, что это действительный URL-адрес, но обратный вызов не вызывается. Если я задаю код jquery (f11 / f10), обратный вызов называется ?? !!!?

Сервер возвращает результаты из приложения MVC в виде класса

// function called
public JsonResult RequestAccessToken(int id)
{
    Token t = new Token();
    t.MasterId = Guid.NewGuid();
    var result = new TokenResult(t.MasterId);
    return this.Json(result, JsonRequestBehavior.AllowGet);
}

// class returned
public class TokenResult
{
    public TokenResult() { }
    public TokenResult(Guid g) { token = g.ToString(); }
    public string token = null;
}

Когда Я получаю доступ к URL через браузер result =

{
  "token":"c877453e-739d-4883-9310-91ddd707d6af"
}
8
задан ebb 29 July 2014 в 19:11
поделиться

4 ответа

Если ваш результат не был успешным, этот обратный вызов не сработает, обычно это происходит из-за того, что возвращается недопустимый JSON. Чтобы проверить это, вы можете использовать длинную форму $. GetJSON , чтобы вы могли увидеть ошибку:

$.ajax({
  url: url,
  dataType: 'json',
  success: function(result){
    alert("token recieved: " + result.token);
  },
  error: function(request, textStatus, errorThrown) {
    alert(textStatus);
  },
  complete: function(request, textStatus) { //for additional info
    alert(request.responseText);
    alert(textStatus);
  }
});

Если это ошибка JSON / парсера, вы можете взять свой ответ и посмотрите, что не так с JSONLint, здесь: http://www.jsonlint.com/

21
ответ дан 5 December 2019 в 06:22
поделиться

Скорее всего, вы не вернете действительный JSON. В документации jQuery отмечается, что «Начиная с jQuery 1.4, если файл JSON содержит синтаксическую ошибку, запрос обычно не выполняется без уведомления». Передает ли обслуживаемый вами текст JSON JSON Lint ? Вы также можете переключиться (по крайней мере временно) на jQuery.ajax . Это позволяет больше обрабатывать ошибки. Примерно так:

$.ajax({
  url: "/Vod/RequestAccessToken/"+videoId,
  dataType: 'json',
  error: function(xhr, textStatus, errorThrown){

        },
  success: function(result){
            alert("token recieved: " + result.token);
        }
});
3
ответ дан 5 December 2019 в 06:22
поделиться

Из документации jQuery :

Важно: Начиная с jQuery 1.4, если файл JSON содержит синтаксическую ошибку, запрос обычно не выполняется без уведомления.

Итак, ваш JSON действителен?

function GetToken(videoId) {
    debugger;
    console.log('getting it');
    var json = $.get("/Vod/RequestAccessToken/"+videoId, function(result){
        console.log('got it');
    });
}

Что выводится выше? (Предполагается, что в вашем браузере есть консоль .)

2
ответ дан 5 December 2019 в 06:22
поделиться

Вы вызываете preventDefault() или возвращаете false в обработчике щелчка якоря?

0
ответ дан 5 December 2019 в 06:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: