Ajax вызов не выполняется при передаче Json определенного размера - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть следующий код, который передает объект JSON в AJAX вызов ...

  var jsonResultStr = $j("#HiddenLiveJson").val();
  var jsonResult = JSON.parse(jsonResultStr);

  var serviceURL = appRoot + 'Register/ImportTasks'

  $j.ajax({
   type: "get",
   url: serviceURL,
   data: { 'jsonResultsStr': jsonResultStr },
   contentType: "application/json; charset=utf-8",
   dataType: "json",
   success: successFunc,
   error: errorFunc
  });

Json получен из файла XLSX, поэтому потенциально может иметь любой размер.

Если передан относительно небольшой набор JSON, скажем, 7 элементов в JSON, то вызов AJAX пройдет успешно, выполнено действие контроллера и мои данные импортированы. Однако, если передан больший набор данных JSON, он последовательно завершается сбоем (HTTP Status 400), даже не приближаясь к действию контроллера. Кажется, я нигде не могу найти никаких предложений, что вызывает это. Очевидно, мое первое предположение - размер файла XLSX.

btw ... Использованное в моем тестировании JSON должно быть надежным, поскольку данные, которые не выполняются, представляют собой те же самые данные, которые успешно выполняются, но дублируются. удвоить его размер.

До сих пор я пытался добавить это в мой web.config:

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

А также это в appSettings в web.config :

<add key="aspnet:MaxJsonDeserializerMembers" value="1500000000" />

А также установка следующего:

<httpRuntime maxRequestLength="1000000000" .../>

Ничто из этого не имело никакого значения. Любые дополнительные предложения приветствуются!

1 Ответ

1 голос
/ 09 апреля 2020

Вам необходимо использовать запрос POST для большого JSON объекта, а также зашифровать данные JSON с contentType как "application / json" и dataType как "json". Замените параметр «data» в вызове ajax как: data: JSON .stringify (jsonResult)

также в скрипте размера сервера перехватывает данные на стороне клиента с помощью метода get POST. Надеюсь, это поможет :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...