Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 31.08.2016, 18:07
Кандидат Javascript-наук
Отправить личное сообщение для pokk Посмотреть профиль Найти все сообщения от pokk
 
Регистрация: 30.01.2014
Сообщений: 145

Exploer,status=304
Добрый день, надо с помощью JS собрать данные из форм и отправить на сервер для сохранения, все сделал и через мазилу все работает.
Но тут решил протестить с exploer, и тут возникла как-то странная ситуация поля с цирфами и тд он отправляет нормально, а
<input id="id_checkbox" type="checkbox" onchange="WebModification_NotSave()" value="checkbox" name="checkbox_UN0">
Почему то со статусом 304 типа нечего не поменялось, хотя если по смотреть как сам запрос там как раз все меняется, но так как статус 304 то нечего не отправляется, и галочки не сохраняются.

Как задать этому гребаному exploer что бы он все отправлял со статусом 200?
Ответить с цитированием
  #2 (permalink)  
Старый 01.09.2016, 02:55
Кандидат Javascript-наук
Отправить личное сообщение для pokk Посмотреть профиль Найти все сообщения от pokk
 
Регистрация: 30.01.2014
Сообщений: 145

Internet explorer 11.
Ответить с цитированием
  #3 (permalink)  
Старый 01.09.2016, 05:11
Кандидат Javascript-наук
Отправить личное сообщение для pokk Посмотреть профиль Найти все сообщения от pokk
 
Регистрация: 30.01.2014
Сообщений: 145

var OnOffUn0= document.getElementById("id_checkbox_UN0");
	var OnOffUn1= document.getElementById("id_checkbox_UN1");
	var SettingSend;
	SettingSend=OnOffUn0.checked+","+OnOffUn1.checked+","+"\0";
	//------------------------------------------------------------
	GetSettingTimeout('SavePage.CGI?'+SettingSend,Single,function () {
	//------------------------------------------------------------
		if(this=="OK"){
			WebModification_cancel();
			alert("Сохранено");
		}
	}
	//=========================================================================
	//=========================================================================
	//=========================================================================
    function GetSettingTimeout3(link,ModeFuncCall,CallbackTrue,CallbackFalse) {
        (function _f() {
			//var http2 = createRequestObject();
            if( http2 ) {
				//---------------------------------------------
                http2.open('GET', link, true);
				//---------------------------------------------
				http2.timeout =1000;
				//---------------------------------------------
                http2.onreadystatechange = function () {
					if (http2.readyState == 4&&http2.status == 200) {
						
					if (CallbackTrue && typeof(CallbackTrue) === "function") {
						CallbackTrue.call(http2.responseText);
					}						
						
						//CallbackTrue.call(http2.responseText);
						//ConnectSuccessful();
						if(ModeFuncCall==CYCLIC){
							TimerID = setTimeout(_f, 1000);
						}
                    }
                };
				//---------------------------------------------
				http2.ontimeout = function() {
					//Disconnect();
					TimerID = setTimeout(_f, 1500);
					if (CallbackFalse && typeof(CallbackFalse) === "function") {
						CallbackFalse.call(http2.responseText);
					}
				}
				//---------------------------------------------
				http2.abort= function() {
					if(StatusAbort==ClearAbbort){
						//Disconnect();
						StatusAbort=ClearAbbort;
						TimerID = setTimeout(_f, 1000);
					}
				}
				//---------------------------------------------
                http2.send(null);
            }else{
				TimerID = setTimeout(_f, 1000);
            }
        })();
    }
Ответить с цитированием
  #4 (permalink)  
Старый 01.09.2016, 06:00
Кандидат Javascript-наук
Отправить личное сообщение для pokk Посмотреть профиль Найти все сообщения от pokk
 
Регистрация: 30.01.2014
Сообщений: 145

Точно так же все через переменную SettingSend.
Я просто не много код сократил, что бы нагляднее был
var OnOffUn0= document.getElementById("id_checkbox_UN0");
	var OnOffUn1= document.getElementById("id_checkbox_UN1");
	
	var select0= document.getElementById("id_select_0");
	var select1= document.getElementById("id_select_1");		
	
	var SettingSend;
	
	
	SettingSend=OnOffUn0.checked+","+OnOffUn1.checked+","+select0.selectedIndex+","+select0.selectedIndex+"\0";

	//------------------------------------------------------------
	GetSettingTimeout('SavePage.CGI?'+SettingSend,Single,function () {
	//------------------------------------------------------------
		if(this=="OK"){
			WebModification_cancel();
			alert("Сохранено");
		}
	}

Причем в отладке если по смотреть на отправляющийся пакета и там явно видно, что при установке/сброса галочки происходит изменение true/false но статус пакета все равно 304.
Ответить с цитированием
  #5 (permalink)  
Старый 01.09.2016, 06:49
Кандидат Javascript-наук
Отправить личное сообщение для pokk Посмотреть профиль Найти все сообщения от pokk
 
Регистрация: 30.01.2014
Сообщений: 145

Не это моя функция, которая подсвечивает кнопку как только произошли изменения, но запрос на сохранения их ещё не отправлен.
по этому и поставил NotSave

function WebModification_NotSave(){
	var ButtSaveSetting = document.getElementById('BuTSaveSetting');
	ButtSaveSetting.className="C_Button";
	//ButtSaveSetting.className="";
	
}
Ответить с цитированием
  #6 (permalink)  
Старый 01.09.2016, 07:53
Кандидат Javascript-наук
Отправить личное сообщение для pokk Посмотреть профиль Найти все сообщения от pokk
 
Регистрация: 30.01.2014
Сообщений: 145

Rise, какие ответы кэшируются?
В заголовке ответных пакетов наставил cache-control: no-cache
а иначе да он и ответный пакет кэшировал.

Но сейчас то проблема с запросом, почему он не видит изменения checkbox?

по поводу Math.random() благодарю, должно помочь так как когда меняю select, то запрос нормально уходит.
Ответить с цитированием
  #7 (permalink)  
Старый 01.09.2016, 08:40
Кандидат Javascript-наук
Отправить личное сообщение для pokk Посмотреть профиль Найти все сообщения от pokk
 
Регистрация: 30.01.2014
Сообщений: 145

Не знал, теперь буду знать. Проверить только вечером смогу.
А тут пока вопрос возник если Math.random() два раза одно и тоже значение выдаст, то второй запрос он закэшируется, или из за того что там стоит random не должен кэшировать?
Ответить с цитированием
  #8 (permalink)  
Старый 01.09.2016, 09:38
Кандидат Javascript-наук
Отправить личное сообщение для pokk Посмотреть профиль Найти все сообщения от pokk
 
Регистрация: 30.01.2014
Сообщений: 145

Ну это понятно, я про то что random может выдать одинаковые значения,
соответственно второй запрос найдет ответ в кэше.
Ответить с цитированием
Ответ



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

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