jQuery $ .ajaxSend () settings.data имеет значение null - PullRequest
1 голос
/ 27 ноября 2008

Я нашел странную ошибку (возможно). Когда я отправляю параметры в $ .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;
    }

Теперь мне нужен парсинг ((. Что делать?

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

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

1 Ответ

1 голос
/ 27 ноября 2008

По умолчанию все, что передается как данные, не являющиеся строкой, обрабатывается и преобразуется в строку запроса. Итак, если вы используете 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.

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