JQuery $ .ajaxSend () settings.data имеет значение null

Нашел странный баг (возможно). Когда я отправляю параметры в $ .ajax в виде хэша и пытаюсь проверить эти параметры в $ .ajaxSend, я обнаружил, что settings.data имеет значение null, settings.url был нормальным с включенными параметрами. Затем я заглянул внутрь кода jQuery и обнаружил, что данные стерты.

    // If data is available, append data to url for get requests
    if ( s.data && type == "GET" ) {
        s.url += (s.url.match(/\?/) ? "&" : "?") + s.data;

        // IE likes to send both get and post data, prevent this
        s.data = null;
    }

Теперь мне нужно разобрать url ((. Что делать?

В JQuery использование ajaxSend для предварительного просмотра URL-адреса, созданного вызовом $ .post

Вот в комментариях я вижу, что данные должны быть там.

Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
1
0
2 628
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

По умолчанию все, что передается как данные, не являющиеся строкой, обрабатывается и преобразуется в строку запроса. Итак, если вы используете POST, чтобы пропустить ошибку:

 $.post({
      url: "http://yourserver/ajax" ,
      data: {param1: 'val1', param2:'val2'}
 });

в $.ajaxSend значение settings.data будет 'param1=val1&param2=val2', и вам нужно будет проанализировать параметры, как с GET.

Если вы хотите избежать синтаксического анализа URL-адреса или данных, просто добавьте копию данных при создании объекта настроек. Дополнительный параметр не должен вызывать никаких проблем.

 var data = {param1: 'val1', param2:'val2'};
 $.get({
      url: "http://yourserver/ajax" ,
      data: data,
      dataCopy: data
 });

Затем в $.ajaxSend вы можете проверить значения в settings.dataCopy.

Другие вопросы по теме