Подтвердить что ты не робот

Внутренняя ошибка сервера Ajax - 500

Я пытаюсь изучить AJAX для этого проекта на работе. У меня есть сайт, который загружает лекарства, которые принимает пациент.

Я вызываю эту функцию AJAX рекурсивно, чтобы она добавила новую таблицу, содержащую один препарат и историю за 7 дней. У меня возникают проблемы с получением кода для выполнения в FF и IE. Прекрасно работает в хроме. У меня были предупреждения с отображением xmlhttp.status, и вот что я получил:

xmlhttp.status == 500 (внутренний сервер ошибка).

Я прокомментировал всю свою рекурсию, поэтому она сужается до этого кратного кода. (x отслеживает количество медикаментов, поэтому я знаю, когда останавливаться)

function LoadMeds()


  if ( x == MaxMedCount )
  {
      document.getElementById("the_day").value = parseInt(document.getElementById("the_day").value)+7; 
  }
  if ( x == (MaxMedCount - 1) )
  {
      document.getElementById("x").value = x + 1;
      show();
  }
  else
  { 

      if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
          xmlhttp=new XMLHttpRequest();
      }
      else
      {// code for IE6, IE5
          xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
      xmlhttp.onreadystatechange=function()
      {
          try 
          {      
              if (xmlhttp.readyState==4 && xmlhttp.status==200)
              {     
                  var div = document.createElement('div');
                  div.innerHTML= xmlhttp.responseText;
                  document.getElementById('MedTable').appendChild(div);
                  document.getElementById("the_med_").value = the_med_;

              }

          }
          catch(e)
          {
              alert("Error");  
          }
      }
      xmlhttp.open("GET","URL with variables passed",true);
      xmlhttp.send();     
      document.getElementById("x").value = x + 1;
  } 

если требуется больше кода, просто дайте мне знать.

4b9b3361

Ответ 1

500 (internal server error) означает, что на стороне сервера что-то пошло не так. Это может быть несколько вещей, но я бы начал с проверки правильности URL и параметров. Кроме того, убедитесь, что все обрабатывает запрос, ожидающий запроса как GET, а не POST.

Один полезный способ узнать больше о том, что происходит, - использовать инструмент, например Fiddler, который позволит вам смотреть все HTTP-запросы и чтобы вы могли точно видеть, что вы отправляете, и сервер отвечает.

Если у вас нет веских оснований для написания собственного кода Ajax, вам будет намного лучше использовать библиотеку, которая обрабатывает Ajax-взаимодействия для вас. jQuery является одним из вариантов.

Ответ 2

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

Откройте файл Web.Config и вставьте эти строки в раздел конфигурации

<system.web.extensions>
  <scripting>
    <webServices>
      <jsonSerialization maxJsonLength="50000000"/>
    </webServices>
  </scripting>
</system.web.extensions>

Ответ 3

Это может быть неправильный параметр для вашего вызова SOAP; посмотрите на формат параметра (ов) в разделе "данные:" json - это передаваемая вами информация - параметр и данные, завернутые в формат JSON.

Панель инструментов отладки Google Chrome содержит некоторые полезные инструменты для проверки параметров и просмотра сообщений об ошибках - например, запустите вкладку Консоль и щелкните по URL-адресу, какие ошибки или нажмите на вкладку сети. Вам нужно будет просмотреть заголовки сообщений, ответ и т.д.

Ответ 4

Раскомментируйте следующую строку: [System.Web.Script.Services.ScriptService]

Служба начнет работать нормально.

[WebService(Namespace = "http://tempuri.org/")]


 [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]


Чтобы разрешить эту веб-службу вызываться из script, используя ASP.NET AJAX, раскомментируйте следующую строку.

[System.Web.Script.Services.ScriptService]

public class WebService : System.Web.Services.WebService 
{

Ответ 5

Имела ту же самую проблему, затем я вспомнил, что по соображениям безопасности ASP не обнаруживает всю трассировку ошибки или стека при удаленном доступе к вашему сайту/сервису, так же как не может удаленно тестировать веб-службу .asmx поэтому я перешел в раздел и отслеживал свои инструменты dev, и только после этого я получил пресловутое сообщение "Не удалось загрузить файл или сборку 'Newtonsoft.Json, Version=3.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' или один из ее депо...".

Итак, зарегистрируйтесь на сервере и отлаживайте оттуда.