Я делаю проект, который использует javascript для получения информации из представления (написанного на Python и с использованием интерфейса Django) на основе текста, который пользователь вводит в поле (запрашивая каждый keyup), а затем отображает эту информацию назад. По сути, это либо отображает «работа не найдена», либо отображает имя, имя пользователя и баланс для этой работы. В Firefox все это прекрасно работает. Я могу ввести JobID, он говорит, что новый идентификатор, и я могу создать работу. Затем я могу сразу же вернуться на страницу и ввести этот идентификатор, и мой поиск возвращает правильную информацию о работе.
Дело в том, что Internet Explorer 8 ленится. Если я набираю идентификатор работы в IE8, мои функции вызывают страницу поиска (/ depos / orglookup /? Q = 123) и получают значение. Так что, если, например, он получит False, я смогу создать новую работу с этим ID. Если я затем вернусь назад и введу тот же номер в это же поле поиска, Internet Explorer не обновит страницу поиска, поэтому он снова вернет false. Если я перехожу на эту страницу поиска, я вижу это ложное значение, но если я обновляю его, я снова получаю правильную информацию. Любая идея о том, как я могу заставить этот запрос каждый раз, когда я набираю в поле поиска, а не как IE ссылаются на кэшированную страницу?
Я добавлю, что мне не очень полезно исправлять это для каждого пользователя, так как это приложение для всей организации, поэтому я действительно могу использовать исправление, которое я могу записать в свой код где-нибудь, чтобы заставить IE на самом деле обновлять страницу поиска каждый раз, когда она должна.
Вот код для функции поиска, если это помогает. Это немного грязно, но я не написал, поэтому постараюсь включить все, что уместно:
$("#id_JobID").keyup(
function(event){
//only fire gets on 0-9, kp 0-9, backspace, and delete
if (event.keyCode in { 96:1, 97:1, 98:1, 99:1, 100:1, 101:1, 102:1, 103:1, 104:1, 105:1,
46:1,48:1, 49:1, 50:1, 51:1, 52:1, 53:1, 54:1, 55:1, 56:1, 57:1, 8:1})
{
if ($("#loadimg").attr("src") != "/static/icons/loading.gif") {
$("#loadimg").attr("src", "/static/icons/loading.gif");
}
if ($("#loadimg").length < 1) {
$("#id_JobID").parent().append("<img id=loadimg src=/static/icons/loading.gif>");
}
clearTimeouts(null); //clear all existing timeouts to stop any running lookups
GetCounter++;
currLoc = window.location.href.slice(window.location.href.indexOf('?') + 1).split('/').slice(-2,-1);
if (currLoc == 'restorebatch') {
var TimeoutId = setTimeout(function() {dynamicSearch('restorelookup');}, 400);
} else {
var TimeoutId = setTimeout(function() {dynamicSearch('orglookup');}, 400);
}
//alert(TimeoutID);
TimeoutBag[GetCounter] = {
'RequestNumber': GetCounter,
'TimeoutId': TimeoutId
}
}
}
);
function clearTimeouts(TimeoutBagKeys) //TimeoutBagKeys is an array that contains keys into the TimeoutBag of Timeout's you want to clear
{
if(TimeoutBagKeys == null) //if TimeoutBagKeys is null, clear all timeouts.
{
for (var i = 0; i < TimeoutBag.length; i++)
{
if (TimeoutBag[i] != null) {
clearTimeout(TimeoutBag[i].TimeoutId);
}
}
}
else //otherwise, an array of keys for the timeout bag has been passed in. clear those timeouts.
{
var ClearedIdsString = "";
for (var i = 0; i < TimeoutBagKeys.length; i++)
{
if (TimeoutBag[TimeoutBagKeys[i]] != null)
{
clearTimeout(TimeoutBag[TimeoutBagKeys[i]].TimeoutId);
ClearedIdsString += TimeoutBag[TimeoutBagKeys[i]].TimeoutId;
}
}
}
}
function dynamicSearch(viewname) {
$(".lookup_info").slideUp();
if ($("#id_JobID").val().length >= 3) {
var orgLookupUrl = "/deposits/" + viewname + "/?q=" + $("#id_JobID").val();
getBatchInfo(orgLookupUrl);
}
else if ($("#id_JobID").val().length == 0) {
$("#loadimg").attr("src", "/static/icons/blank.gif");
$(".lookup_info").slideUp();
}
else {
$("#loadimg").attr("src", "/static/icons/loading.gif");
$(".lookup_info").slideUp();
}
}
function getBatchInfo(orgLookupUrl) {
$.get(orgLookupUrl, function(data){
if (data == "False") {
$("#loadimg").attr("src", "/static/icons/red_x.png");
$(".lookup_info").html("No batch found - creating new batch.");
$("#lookup_submit").val("Create");
$(".lookup_info").slideDown();
toggleDepInputs("on");
}
else {
$("#loadimg").attr("src", "/static/icons/green_check.png");
$("#lookup_submit").val("Submit");
$(".lookup_info").html(data);
$(".lookup_info").slideDown()
toggleDepInputs("off");
};
});
}