Nano Hash - криптовалюты, майнинг, программирование

Внутренняя ошибка сервера № 500 при попытке отобразить JSONResult с помощью jQuery ajax и MVC

Контроллер

public JsonResult TeamInfo(string teamName)
            {
                teamDA = new TeamDataAccess();
                var teamInfo = teamDA.TeamInfo(teamName);
               System.Web.Script.Serialization.JavaScriptSerializer oSerializer =
             new System.Web.Script.Serialization.JavaScriptSerializer();
                string sJSON = oSerializer.Serialize(teamInfo);
                JsonResult jsonResult 
=new JsonResult(){ JsonRequestBehavior = JsonRequestBehavior.AllowGet }; 
                    jsonResult.Data = sJSON; // first i give this.
         jsonResult.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
                    return jsonResult;
                }

Вызов контроллера из jQuery

$.ajax({
                url: 'Team/TeamInfo/' + teamName,
                success: function (data) {
                    $('#teamDetails').html(data);
                    alert('Load was performed.');
                    $("#dialog-modal").dialog("open");
                }
            });

Во время отладки я вижу, что он выполняется до последней строки в контроллере return jsonResult;, но alert('Load was performed.'); не виден. Вы знаете, в чем причина того, что это не входит в часть успеха. На стороне сервера ошибок нет. Любая помощь высоко ценится.

EDIT Когда я добавил error в вызов ajax. пишет ошибка 500 (внутренняя ошибка сервера). Как найти эту проблему?


  • Почему вы отправляете обратно JsonResult, если вы напрямую помещаете результат в DOM страницы в виде HTML? Попробуйте закомментировать строку $('#teamDetails').html(data);.... и посмотреть, что получится. 11.07.2012
  • Ничего такого. он просто завершает функцию в контроллере, и он не входит в успех. Есть ли необходимость добавить в мой код? 11.07.2012
  • Вызовите свое действие из браузера вместо вызова с помощью ajax. Сервер вернет вам страницу с ошибкой. Или запустить в режиме отладки. 11.07.2012
  • Да, я понял проблему. This request has been blocked because sensitive information could be disclosed to third party web sites when this is used in a GET request. Пожалуйста, посмотрите мой обновленный код 11.07.2012

Ответы:


1

Вам не нужно делать всю сериализацию с помощью JavaScriptSerializer.

Ваш метод действий может выглядеть так:

 public JsonResult TeamInfo(string teamName)
 {
      return Json(new TeamDataAccess()TeamInfo(teamName), JsonRequestBehavior.AllowGet); 
 }
11.07.2012
  • это работает . большое спасибо. Но почему это не работает в моем коде? 11.07.2012
  • Я также пробовал выше, но это не сработает. Можете ли вы сказать, в чем разница? 11.07.2012
  • Он возвращает ту же ошибку для конфиденциальной информации... или другую? 11.07.2012

  • 2

    Тип запроса по умолчанию для $.ajaxGET, но по умолчанию запросы GET не разрешены для JsonResult, поэтому вам нужно явно разрешить их с помощью Свойство JsonRequestBehavior:

    JsonResult jsonResult = 
        new JsonResult { JsonRequestBehavior = JsonRequestBehavior.AllowGet };
    jsonResult.Data = sJSON;
    
    return jsonResult;
    

    Или вы можете POST с вашим вызовом ajax, используя type: 'POST'

    Примечание. До сих пор неясно, какова ваша цель поместить возвращенный JSON непосредственно в DOM со строкой $('#teamDetails').html(data);.

    11.07.2012
  • Я попробовал это. Но все же это не так. Позвольте мне проверить еще раз. Прежде чем поместить его в div, мне нужно создать HTML. 11.07.2012
  • это не работает :(. Но нижний работает. но почему он не работает? 11.07.2012
  • @VeeKeyBee This request has been blocked... это сообщение об ошибке, которое вы получаете, когда не устанавливаете JsonRequestBehavior.AllowGet. Таким образом, ваша проблема заключалась в этом все время, возможно, приложение не было перестроено или браузер кэшировал результат... Использование return Json(... будет делать в основном то же самое, что вы делали с созданием JsonResult и выполнением сериализации вручную... 11.07.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..