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

$ .ajaxSetup не устанавливает тип содержимого для запросов Get

Код 1

$.ajax({url:"1.aspx/HelloWorld",type:"GET",dataType:"json",contentType:"application/json"});

Запрос ответа для Code1

Код 2

$.ajaxSetup({
   contentType: "application/json",
   dataType: "json"
});

$.get("1.aspx/HelloWorld","",$.noop,"json");

Запрос ответа для кода 2

Code1 эффективно устанавливает и content-type, и datatype. Code2 не устанавливает тип содержимого. Предназначено ли это или мне нужно делать что-то Voodoo, чтобы заставить его работать?


  • возможный дубликат JQuery - как использовать $ .post () contentType = application / json? 10.04.2012
  • Код 2 $.get можно переписать как $.get(url), поскольку вы не передаете данные или функцию обратного вызова, а json является типом данных по умолчанию из-за ajaxSetup. 10.04.2012
  • @Starx lol, это Get запрос, а не сообщение. Сообщение работает очень хорошо 10.04.2012
  • @KevinB Означают ли здесь Content-Type и dataType одно и то же? если да, то то, что вы говорите, правильно. но я думаю, что Content-Type указывает MIME-тип данных, ожидаемых от запроса 10.04.2012
  • @Deeptechtons Верно, но указывать json в $ .get бессмысленно, если вы уже определили его как значение по умолчанию в ajaxSetup. Сохраните ajaxSetup как есть и используйте сокращенный $.get(), результат должен быть таким же. Какую версию jQuery вы используете? 10.04.2012
  • @KevinB jquery v1.7.1, но я хотел бы сказать, что он действительно не устанавливает тип содержимого при запросе. позвольте мне добавить изображения для справки 10.04.2012
  • Это не связано с параметрами, переданными в $.get, $.get() не принимает параметр для установки contentType, который должен обрабатываться $.ajaxSetup. Я сразу ударил по ядру и посмотрю, что случилось. 10.04.2012
  • Я вижу, что это происходит, но это не связано с $ .get (). Попробуйте вместо него $.ajax(url), результат будет тот же. Если есть ошибка, то это потому, что $.ajax() не смотрит на $.ajaxSetup параметр contentType, но я еще не подтвердил это. 10.04.2012
  • Может быть, это глупый вопрос, но почему ваш contentType должен быть application/json для заголовков ваших запросов, если вы не отправляете json с данными запроса? 10.04.2012
  • @KevinB Поскольку для метода службы asp.net требуется, чтобы content-type был установлен в application/json для правильного вызова, подробнее об этом здесь weblogs.asp.net/scottgu/archive/2007/04/04 / (см. раздел Проверка заголовка типа содержимого AJAX ASP.NET) и здесь encosia.com/ 11.04.2012
  • Я бы просто создал метод-оболочку, который использует $ .ajax () с вашими собственными предопределенными свойствами. 11.04.2012
  • @KevinB Я бы отметил вашу идею как ответ. Если бы вы могли разместить какой-либо код оболочки jQuery и объяснить, как это делается (теперь я понимаю, как это делается), но для завершения и ответа на будущее Google Searches было бы неплохо детализировать ответ 11.04.2012

Ответы:


1

Я бы просто создал быструю оболочку для метода ajax.

$.myAjax = function(url,data){
    return $.ajax({
        contentType: "application/json",
        url: url,
        data: data || {},
        type: "GET",
        dataType: "json"
    });
}
// used with
$.myAjax("foobar.asp").done(function(data){
    console.log(data);
}).fail(function(){
    console.log(arguments);
});

Причина, по которой заголовок не передается, заключается в том, что если contentType не указан для данного запроса и нет данных, contentType не устанавливается. Это может быть ошибкой, поскольку contentType был установлен в ajaxSetup, но я не уверен в этом.

11.04.2012
  • принято в качестве ответа, мне очень хотелось поблагодарить вас за настойчивость и самоотдачу в ответах на вопросы 11.04.2012

  • 2

    $.ajaxSetup содержит параметры по умолчанию для большей части всех запросов ajax, но не отправляет сам запрос ajax.

    Но $.ajax - это фактическая функция, которая отправляет запрос.


    В коде 1:

    Он просто отправляет запрос GET Ajax с исчерпывающим методом $.ajax()

    В коде 2:

    Параметры по умолчанию для всех запросов ajax устанавливаются перед отправкой любого запроса. Затем, когда фактический запрос выполняется с использованием $ .get, эти параметры больше не нужно определять.


    Обновить

    Кажется, это ошибка. Такая проблема возникает, когда вы отправляете $.get запрос без данных. Проверьте здесь. Вам нужно увидеть заголовки запроса с помощью firebug или подобного.

    10.04.2012
  • Однако его $.get() действительно отправляет запрос ajax с использованием ранее установленных значений по умолчанию. 10.04.2012
  • @Starx, который я знал и упомянул, вводит в заблуждение. прочтите проблему, определенную ниже, после того, как код # 2 кода отказывается устанавливать Content-Type, даже если он указан в ajaxsetup 10.04.2012
  • @Deeptechtons, вы спрашиваете, как вы можете сказать, что заголовок вашего вопроса вводит в заблуждение, и до сих пор не исправляете его. 10.04.2012
  • @Starx jQuery не устанавливает Content-Type в application / json во время запроса на получение, что является проблемой здесь, может быть любезно объяснить причину этого 10.04.2012
  • @Starx название и вопрос были изменены, пожалуйста, изучите его 10.04.2012
  • @Deeptechtons, похоже, это ошибка, но я нашел обходной путь. Проверить обновление 10.04.2012
  • @Starx Что происходит на скрипке, которая показывает ошибку? заголовки запроса выглядят правильно. Если есть ошибка, она также должна присутствовать в $.ajax, поскольку $.get прокси-серверы напрямую $.ajax 10.04.2012
  • @KevinB, я не понимаю твой вопрос? Можете ли вы показать демонстрацию вашего запроса? 10.04.2012
  • Извините, я вижу то, что вы сейчас видите. См. Эту скрипку jsfiddle.net/fzgjw/4 it это не просто $ .get, это все запросы ajax. Нам нужно проверить, что делает $.ajaxSetup({},settings). 10.04.2012
  • Вот еще одно тестирование, показывающее, что внутреннее использование $ .ajaxSetup работает правильно, так что перейдем к этому. jsfiddle.net/fzgjw/6 10.04.2012
  • Я обнаружил, что в строке 7517, если данные не отправляются, contentType не установлен. Опять же, это не ограничивается $.get() 10.04.2012
  • @KevinB, это замечательные усилия с вашей стороны. Спасибо за информацию. 10.04.2012
  • Конечно, это 7517 из 1.7.1. Однако как это помогает в решении вопроса? Code1 не отправляет данные. 10.04.2012
  • Из этого условия s.data && s.hasContent && s.contentType !== false || options.contentType единственная часть, которая, на мой взгляд, под вопросом, - это s.hasContent, остальные довольно очевидны как истинные в данном случае. 10.04.2012
  • Новые материалы

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

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

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

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

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

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

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