Вы не упоминаете серверный код, который используете. У меня были некоторые проблемы с вызовами jQuery AJAX в IE при использовании ASP.NET на стороне сервера (обработчик ashx). Они ушли, когда я полностью прочитал запрос перед тем, как начать писать ответ (хотя в моем случае я использовал POST, а не GET-запрос, поэтому тело запроса содержало некоторые данные).
Я написал следующий простой проект ASP.NET, чтобы проверить вашу проблему в IE6. Однако я не могу воспроизвести (IE6 с пакетом обновления 2 (SP2), работающий на виртуальной машине, работающей с IIS 7.5, показывает окно предупреждения от обработчика успеха должным образом). Не могли бы вы попробовать запустить его в своей среде и сообщить, работает ли он из IE6 для вас?
Примечание : Иногда, когда я очищал кеш IE6 и комментировал строку «SetCacheability» в ashx.cs, первый щелчок по кнопке «Отправить» не отображал окно предупреждения об успешном завершении, хотя последующие нажатия делали покажи это. Может быть, все, что вам нужно, это добавить заголовки «без кэширования» к ответу на вызов в вашей реализации?
файл index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>AJAX GET test</title>
</head>
<body>
<input type="button" id="test" value="Send" />
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
<script type="text/javascript">
$("#test").click(function () {
$.ajax({
url: "Api.ashx?param=one",
cache: true,
type: "GET",
dataType: "json",
success: function (data) {
alert("Success, result = " + data.result);
},
error: function (request, status, err) {
alert("Error");
}
});
});
</script>
</body>
</html>
файл Api.ashx
<%@ WebHandler Language="C#" CodeBehind="Api.ashx.cs" Class="AjaxTest.Api" %>
file Api.ashx.cs
using System.Diagnostics;
using System.Text;
using System.Web;
namespace AjaxTest
{
public class Api : IHttpHandler
{
public bool IsReusable { get { return true; } }
public void ProcessRequest(HttpContext context)
{
var param = context.Request["param"]; // this flushes the request
Trace.WriteLine("Request: \"" + context.Request.RawUrl + "\", param: \"" + param + "\"", "** Debug");
context.Response.StatusCode = 200;
context.Response.ContentType = "application/json";
context.Response.ContentEncoding = Encoding.UTF8;
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
context.Response.Write("{\"result\":\"" + param + "\"}");
}
}
}