Простой результат JsonResult возвращает ошибку синтаксического анализа в методе Jquery ajax

#jquery #asp.net-mvc #jsonresult

#jquery #asp.net-mvc #jsonresult

Вопрос:

я использую asp.net mvc2 с jquery 1.5.2. я притворяюсь, что выполняю вызов на стороне клиента определенного метода в моем контроллере, который возвращает данные json.

На самом деле, мой вызов сервера на стороне клиента работает, но проблема в том, что jquery не распознает возвращенный json.

Я не могу понять, что я делаю не так!, может кто-нибудь помочь мне с этим?

Метод контроллера:

 <HttpPost()> _
Function DoStuff(ByVal id As Integer) As JsonResult
    Dim retval As JsonResult = Nothing

    retval = Json(New xpto With {.P1 = "P1Value"})

    Return retval
End Function
  

Вызов jQuery Ajax:

     $.ajax({
        url: "/DoStuff/5",
        type: "POST",
        dataType: "json",
        async: false,
        success: function(data, textStatus, jqXHR) {
            alert(textStatus);
        },
        error: function(jqXHR, textStatus, errorThrown) {
            alert(textStatus);
        }
    });
  

Значения при обработке метода ошибок:

Повторная ошибка: jQuery1520029581770420782693_1303980789842 не был вызван

textStatus: ошибка синтаксического анализа

jqXHR.responseText = «{«P1″:»P1Value»}»

Комментарии:

1. Не вижу ничего неправильного в вашем коде. Происходит ли это во всех браузерах? Я протестировал этот код, и он отлично работал.

2. я тестировал на IE8 и FireFox4 (одинаковый результат для обоих)

Ответ №1:

Проблема была не в том коде, который работает нормально, проблема сгенерирована порядком тегов Sctipt в разметке (validate)

НЕВЕРНО:

 <script src="/Scripts/jquery-1.5.2.min.js" type="text/javascript"></script>
<script src="/Scripts/jquery-ui-1.8.11.custom.min.js" type="text/javascript"></script>
<script src="/Scripts/jquery.validate.min.js" type="text/javascript"></script>
<script src="/Scripts/jquery.maskedinput-1.3.min.js" type="text/javascript"></script>
  

ВЕРНО:

 <script src="/Scripts/jquery-1.5.2.min.js" type="text/javascript"></script>
<script src="/Scripts/jquery-ui-1.8.11.custom.min.js" type="text/javascript"></script>
<script src="/Scripts/jquery.maskedinput-1.3.min.js" type="text/javascript"></script>
<script src="/Scripts/jquery.validate.min.js" type="text/javascript"></script>