Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.04.2013, 16:03
Интересующийся
Отправить личное сообщение для SergoMorello Посмотреть профиль Найти все сообщения от SergoMorello
 
Регистрация: 06.05.2011
Сообщений: 21

Помогите изменить код
Ребят всем привет вообщем суть проблемы - есть код (javascript) который делает запрос к файлику php , тобиш мы чтото вводим на сайте в определённом текстовом поле и данный код возвращает ответ от php на страницу под это текстовое поле, так вот всё работает нормально но, каждый запрос както кэшируется в яве и при последующем вводе тогоже запроса выводится полученый ранее ответ, извиняюсь но незнаю как подругому это обьяснить вообщем вот код , как каждый раз при вводе данных в строку делать запрос к php без всяких кэшев?

var ajaxBox_offsetX=0;
var ajaxBox_offsetY=0;
var ajax_list_externalFile='inc/javascript/autocomplete/getNamList.php';	// Path to external file
var minimumLettersBeforeLookup=1;	// Number of letters entered before a lookup is performed.
var ajax_list_objects=new Array();
var ajax_list_cachedLists=new Array();
var ajax_list_activeInput=false;
var ajax_list_activeItem;
var ajax_list_optionDivFirstItem=false;
var ajax_list_currentLetters=new Array();
var ajax_optionDiv=false;
var ajax_optionDiv_iframe=false;
var ajax_list_MSIE=false;
if(navigator.userAgent.indexOf('MSIE')>=0 && navigator.userAgent.indexOf('Opera')<0)ajax_list_MSIE=true;
var currentListIndex=0;
function ajax_getTopPos(inputObj){
var returnValue=inputObj.offsetTop;
while((inputObj=inputObj.offsetParent) != null){
returnValue += inputObj.offsetTop;}
return returnValue;}
function ajax_list_cancelEvent(){
return false;}
function ajax_getLeftPos(inputObj){
var returnValue=inputObj.offsetLeft;
while((inputObj=inputObj.offsetParent) != null)returnValue += inputObj.offsetLeft;
return returnValue;}
function ajax_option_setValue(e,inputObj){
if(!inputObj)inputObj=this;
var tmpValue=inputObj.innerHTML;
if(ajax_list_MSIE)tmpValue=inputObj.innerText;else tmpValue=inputObj.textContent;
if(!tmpValue)tmpValue=inputObj.innerHTML;
ajax_list_activeInput.value=tmpValue;
if(document.getElementById(ajax_list_activeInput.name + '_hidden'))document.getElementById(ajax_list_activeInput.name + '_hidden').value=inputObj.id; 
ajax_options_hide();}
function ajax_options_hide(){
if(ajax_optionDiv)ajax_optionDiv.style.display='none';	
if(ajax_optionDiv_iframe)ajax_optionDiv_iframe.style.display='none';}
function ajax_options_rollOverActiveItem(item,fromKeyBoard){
if(ajax_list_activeItem)ajax_list_activeItem.className='optionDiv';
item.className='optionDivSelected';
ajax_list_activeItem=item;
if(fromKeyBoard){
if(ajax_list_activeItem.offsetTop>ajax_optionDiv.offsetHeight){
ajax_optionDiv.scrollTop=ajax_list_activeItem.offsetTop - ajax_optionDiv.offsetHeight + ajax_list_activeItem.offsetHeight + 2 ;}
if(ajax_list_activeItem.offsetTop<ajax_optionDiv.scrollTop){
ajax_optionDiv.scrollTop=0;}}}
function ajax_option_list_buildList(letters,paramToExternalFile){
ajax_optionDiv.innerHTML='';
ajax_list_activeItem=false;
if(ajax_list_cachedLists[paramToExternalFile][letters.toLowerCase()].length<=1){
ajax_options_hide();
return;}
ajax_list_optionDivFirstItem=false;
var optionsAdded=false;
for(var no=0;no<ajax_list_cachedLists[paramToExternalFile][letters.toLowerCase()].length;no++){
if(ajax_list_cachedLists[paramToExternalFile][letters.toLowerCase()][no].length==0)continue;
optionsAdded=true;
var div=document.createElement('DIV');
var items=ajax_list_cachedLists[paramToExternalFile][letters.toLowerCase()][no].split(/###/gi);
if(ajax_list_cachedLists[paramToExternalFile][letters.toLowerCase()].length==1 && ajax_list_activeInput.value== items[0]){
ajax_options_hide();
return;}
div.innerHTML=items[items.length-1];
div.id=items[0];
div.className='optionDiv';
div.onmouseover=function(){ ajax_options_rollOverActiveItem(this,false) }
div.onclick=ajax_option_setValue;
if(!ajax_list_optionDivFirstItem)ajax_list_optionDivFirstItem=div;
ajax_optionDiv.appendChild(div);}	
if(optionsAdded){
ajax_optionDiv.style.display='block';
if(ajax_optionDiv_iframe)ajax_optionDiv_iframe.style.display='';
ajax_options_rollOverActiveItem(ajax_list_optionDivFirstItem,true);}}
function ajax_option_list_showContent(ajaxIndex,inputObj,paramToExternalFile,whichIndex){
if(whichIndex!=currentListIndex)return;
var letters=inputObj.value;
var content=ajax_list_objects[ajaxIndex].response;
var elements=content.split('|');
ajax_list_cachedLists[paramToExternalFile][letters.toLowerCase()]=elements;
ajax_option_list_buildList(letters,paramToExternalFile);}
function ajax_option_resize(inputObj){
ajax_optionDiv.style.top=(ajax_getTopPos(inputObj) + inputObj.offsetHeight + ajaxBox_offsetY) + 'px';
ajax_optionDiv.style.left=(ajax_getLeftPos(inputObj) + ajaxBox_offsetX) + 'px';
if(ajax_optionDiv_iframe){
ajax_optionDiv_iframe.style.left=ajax_optionDiv.style.left;
ajax_optionDiv_iframe.style.top=ajax_optionDiv.style.top;}}
function ajax_showOptions(inputObj,paramToExternalFile,e,razd,num){
if(e.keyCode==13||e.keyCode==9)return;
if(ajax_list_currentLetters[inputObj.name]==inputObj.value)return;
if(!ajax_list_cachedLists[paramToExternalFile])ajax_list_cachedLists[paramToExternalFile]=new Array();
ajax_list_currentLetters[inputObj.name]=inputObj.value;
if(!ajax_optionDiv){
ajax_optionDiv=document.createElement('DIV');
ajax_optionDiv.id='ajax_listOfOptions';	
document.body.appendChild(ajax_optionDiv);
if(ajax_list_MSIE){
ajax_optionDiv_iframe=document.createElement('IFRAME');
ajax_optionDiv_iframe.border='0';
ajax_optionDiv_iframe.style.width=ajax_optionDiv.clientWidth + 'px';
ajax_optionDiv_iframe.style.height=ajax_optionDiv.clientHeight + 'px';
ajax_optionDiv_iframe.id='ajax_listOfOptions_iframe';
document.body.appendChild(ajax_optionDiv_iframe);}
var allInputs=document.getElementsByTagName('INPUT');
for(var no=0;no<allInputs.length;no++){
if(!allInputs[no].onkeyup)allInputs[no].onfocus=ajax_options_hide;}			
var allSelects=document.getElementsByTagName('SELECT');
for(var no=0;no<allSelects.length;no++){
allSelects[no].onfocus=ajax_options_hide;}
var oldonkeydown=document.body.onkeydown;
if(typeof oldonkeydown!='function'){
document.body.onkeydown=ajax_option_keyNavigation;}else{
document.body.onkeydown=function(){
oldonkeydown();
ajax_option_keyNavigation() ;}}
var oldonresize=document.body.onresize;
if(typeof oldonresize!='function'){
document.body.onresize=function(){ajax_option_resize(inputObj);};}else{
document.body.onresize=function(){oldonresize();
ajax_option_resize(inputObj) ;}}
}
if(inputObj.value.length<minimumLettersBeforeLookup){
ajax_options_hide();
return;}
ajax_optionDiv.style.top=(ajax_getTopPos(inputObj) + inputObj.offsetHeight + ajaxBox_offsetY) + 'px';
ajax_optionDiv.style.left=(ajax_getLeftPos(inputObj) + ajaxBox_offsetX) + 'px';
if(ajax_optionDiv_iframe){
ajax_optionDiv_iframe.style.left=ajax_optionDiv.style.left;
ajax_optionDiv_iframe.style.top=ajax_optionDiv.style.top;}
ajax_list_activeInput=inputObj;
ajax_optionDiv.onselectstart=ajax_list_cancelEvent;
currentListIndex++;
if(ajax_list_cachedLists[paramToExternalFile][inputObj.value.toLowerCase()]){
ajax_option_list_buildList(inputObj.value,paramToExternalFile,currentListIndex);}else{
var tmpIndex=currentListIndex/1;
ajax_optionDiv.innerHTML='';
var ajaxIndex=ajax_list_objects.length;
ajax_list_objects[ajaxIndex]=new sack();
var url=ajax_list_externalFile + '?' + paramToExternalFile + '=1&razd='+razd+'&num='+num+'&letters=' + inputObj.value.replace(" ","+");
ajax_list_objects[ajaxIndex].requestFile=url;	// Specifying which file to get
ajax_list_objects[ajaxIndex].onCompletion=function(){ ajax_option_list_showContent(ajaxIndex,inputObj,paramToExternalFile,tmpIndex);};	// Specify function that will be executed after file has been found
ajax_list_objects[ajaxIndex].runAJAX();		// Execute AJAX function		
}}
function ajax_option_keyNavigation(e){
if(document.all)e=event;
if(!ajax_optionDiv)return;
if(ajax_optionDiv.style.display=='none')return;
if(e.keyCode==38){	// Up arrow
if(!ajax_list_activeItem)return;
if(ajax_list_activeItem && !ajax_list_activeItem.previousSibling)return;
ajax_options_rollOverActiveItem(ajax_list_activeItem.previousSibling,true);}
if(e.keyCode==40){	// Down arrow
if(!ajax_list_activeItem){
ajax_options_rollOverActiveItem(ajax_list_optionDivFirstItem,true);}else{
if(!ajax_list_activeItem.nextSibling)return;
ajax_options_rollOverActiveItem(ajax_list_activeItem.nextSibling,true);}}
if(e.keyCode==13||e.keyCode==9){	// Enter key or tab key
if(ajax_list_activeItem && ajax_list_activeItem.className=='optionDivSelected')ajax_option_setValue(false,ajax_list_activeItem);
if(e.keyCode==13)return false; else return true;}
if(e.keyCode==27){	// Escape key
ajax_options_hide();}}
document.documentElement.onclick=autoHideList;
function autoHideList(e){
if(document.all)e=event;
if (e.target) source=e.target;
else if (e.srcElement) source=e.srcElement;
if (source.nodeType== 3) // defeat Safari bug
source=source.parentNode;		
if(source.tagName.toLowerCase()!='input' && source.tagName.toLowerCase()!='textarea')ajax_options_hide();}
Ответить с цитированием
  #2 (permalink)  
Старый 18.04.2013, 17:52
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от SergoMorello
как каждый раз при вводе данных в строку делать запрос к php без всяких кэшев?
отдавать заголовок пыхой запрещающий кешировать
и научится форматировать код -делать его читаемым
Ответить с цитированием
  #3 (permalink)  
Старый 18.04.2013, 20:16
Интересующийся
Отправить личное сообщение для SergoMorello Посмотреть профиль Найти все сообщения от SergoMorello
 
Регистрация: 06.05.2011
Сообщений: 21

код писал не я , он из одного движка, кэширует не пых а этот код
Ответить с цитированием
  #4 (permalink)  
Старый 18.04.2013, 20:18
Интересующийся
Отправить личное сообщение для SergoMorello Посмотреть профиль Найти все сообщения от SergoMorello
 
Регистрация: 06.05.2011
Сообщений: 21

вот кстати в самом верху ajax_list_cachedLists массив с кэшем если я правильно понял
Ответить с цитированием
  #5 (permalink)  
Старый 18.04.2013, 20:32
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,595

Либо, если доступа к пхп нет, добавлять в запрос рандомный параметр:
...
url += '&nocache=' + Math.random();
...и научится форматировать код - делать его читаемым.

Сообщение от SergoMorello Посмотреть сообщение
вот кстати в самом верху ajax_list_cachedLists массив с кэшем если я правильно понял
Хз, не охота рыться в этой кучке испражнений. Попробуйте удалить все места в коде, что ссылаются на этот массив, может поможет.
__________________
29375, 35

Последний раз редактировалось Aetae, 18.04.2013 в 20:35.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменить код из десятичной в восьмеричную Любознательный Общие вопросы Javascript 9 14.02.2012 09:41
помогите изменить атрибут тега odlf3 Общие вопросы Javascript 3 02.12.2011 14:53
помогите начинающему оптимизироват код bookin jQuery 0 19.10.2011 15:10
Код калькулятора на JS. помогите с ошибкой! kirill.psl Общие вопросы Javascript 9 26.08.2010 11:38
Помогите довести код до ума krol Элементы интерфейса 4 09.08.2010 01:50