Firefox JQuery JSON Issue - PullRequest
       22

Firefox JQuery JSON Issue

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

Я использую следующий код для запроса данных из приложения ASP.net MVC. Я также использую TcpTrace, чтобы я мог видеть запрос / ответ.

if (isInteger($('#txtDay').val()) && isInteger($('#txtMonth').val()) && isInteger($('#txtYear').val())) {
    $.ajax({
        type: 'POST',
        contentType: 'application/json; charset=utf-8',
        url: strApi + 'wip/job/getsummary/' + $('#txtYear').val() + '/' + $('#txtMonth').val() + '/' + $('#txtDay').val(),
        data: '{}',
        dataType: 'json',
        cache: false,
        beforeSend: function(XMLHttpRequest) { ShowLoading(); },
        success: function(data, textStatus) {
            ShowJobSummaryList(data);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            HideLoading();
            ShowStatus('unable to retrieve job summary list');
            alert(XMLHttpRequest.statusText);
            alert(textStatus);
        },
        complete: function(XMLHttpRequest, textStatus) {
            HideLoading();
        }
    });
}

При использовании IE все работает нормально - тип контента правильно установлен на application / json. Однако в Firefox 3.5.5 тип содержимого отсутствует:

OPTIONS /api/wip/job/getsummary/2009/11/25 HTTP/1.1
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Origin: http://localhost
Access-Control-Request-Method: POST
Access-Control-Request-Headers: x-requested-with

Это заставляет ASP.net MVC возвращать XML. Кто-нибудь может объяснить, почему Firefox не отправляет тип контента?

Ответы [ 2 ]

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

Похоже, что это отправка запроса опций. Обычная причина этой проблемы - когда вы пытаетесь использовать Ajax-запрос к другому домену, который некоторые браузеры (включая firefox - см. здесь ) не разрешают.

Можете ли вы уточнить, находится ли URL-адрес вашего запроса на другом домене. в этом случае вам придется использовать jsonp или прокси-сервер.

0 голосов
/ 15 февраля 2017

Подобное происходит со мной. Когда я запускаю тот же запрос с Fiddler, он работает, но когда я запускаю его с Firefox HttpRequester, он не работает. Поэтому я сравнил оба запроса и похоже, что HttpRequester меняет заголовки запроса. Я попробовал несколько способов заставить его работать, даже отредактировал запрос Raw, но все же, когда я проверяю окончательный запрос, тип контента дублируется так:

Content-Type: application/json, application/json

И это также добавляет кучу других заголовков. Но когда я проверил окончательный запрос, сделанный Fiddler, это было просто:

Content-Type: application/json

И, следовательно, это сработало.

На странице поддержки продукта Mozilla Firefox я также обнаружил отзывы о подобных ошибках. Но я помню, что раньше это работало в HttpRequester, так что что-то делать с последней версией.

...