Тип jQuery.ajax: публикация в файл Ashx, не инициируемый в IE. отлично работает в FF, Chrome и Safari - PullRequest
2 голосов
/ 13 октября 2011

это мой первый вопрос к стеку.

Тип jQuery.ajax: публикация в файл Ashx, не инициируемая в IE.отлично работает в FF, Chrome и Safari

Код ниже:

$.ajax({
    type: "Post",
        url: "http://[ ... ]loguserdata.ashx?" + dataString,
        data: "",
        cache: "false",
        contentType: "text/plain",
        success: function(msg){
            //alert( "Data Saved: " + msg );
        }
});

отлично работает в FF и т. д. Я имею в виду файл ashx вызывается и информация регистрируется.Я вижу вызов ajax в эквивалентах fiddler, firebug и chrome.

, но в IE9 или в режиме совместимости IE, похоже, не происходит джекчита.

Я могу получить несколько версийприведенный выше код для работы в других браузерах.Включая $('#result').load( ...

, но НИЧЕГО не работает в IE

btw, отлично работает локально в IE.значение.

и это не проблема кеша.У меня есть date=getTime() прикрепленный к концу querystring.

querystring (dataString) выглядит примерно так: fname=john&lname=doedy

РЕДАКТИРОВАТЬ: я решил эту проблему.Завтра я выложу подробный ответ, когда у меня будет время.

Ответы [ 3 ]

1 голос
/ 14 октября 2011

Длинная история усечена: Вы не можете сделать кросс-домен XMLHttpRequest. Используйте метод getJSON jQuery с параметром строки запроса & callback =? добавлено в URL. Это, я полагаю, преобразует тип данных в JSONP.

 var url = 'http://handlers.flowauto.com/eprice/loguserdata.ashx?fname=jim&callback=?';
        $.getJSON(url, function(data) {
            // do some stuff
        });

Вот несколько ссылок, которые помогли мне решить эту проблему.

XMLHttpRequest не может загрузить URL с помощью jQuery

http://api.jquery.com/jQuery.getJSON/ см. Выдержку ниже

JSONP Если URL содержит строку "callback =?" (или аналогичный, как определяется серверным API), запрос обрабатывается как JSONP вместо. Смотрите обсуждение типа данных jsonp в $ .ajax () для более подробная информация.

http://api.jquery.com/jQuery.ajax/ см. Выдержку ниже

Дополнительные примечания: из-за ограничений безопасности браузера большинство "Ajax" запросы подчиняются той же политике происхождения; запрос не может успешно получить данные из другого домена, субдомена или протокол. Запросы Script и JSONP не имеют одинакового происхождения. ограничения политики.

0 голосов
/ 13 октября 2011

Попробуйте, так как вы не отправляете данные POST:

$.ajax({
    type: "GET",
        url: "http://[ ... ]loguserdata.ashx?" + dataString,        
        cache: "false",
        contentType: "text/plain",
        success: function(msg){
            //alert( "Data Saved: " + msg );
        }
});
0 голосов
/ 13 октября 2011

Проверьте вашу безопасность IE, так как она работает локально.Я думаю, что файлы на locahost имеют больше привилегий.

Редактировать:

IE9 запрещает междоменный вызов ajax, браузер Opera тоже.Для IE9 вы можете прочитать эту статью , для обходного пути.Он предлагает использовать XDR (XDomainRequest) вместо обычного XMLHttpRequest.

...