Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Иногда не срабатывает AJAX функция, Разные браузеры 
V
    Опции темы
Самозванка
Дата 24.9.2007, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Девушка в стиле IT
**


Профиль
Группа: Завсегдатай
Сообщений: 484
Регистрация: 5.9.2006
Где: USA

Репутация: нет
Всего: 40



Столкнулась с такой проблемой: на некоторых браузерах  Internet Exploкer не срабатывают ajax- функции. При том версии браузеров одинаковые. 
Код:
Код

<script language="JavaScript">
   var request = false;
   var request2 = false;
   try {
     request = new XMLHttpRequest();
     request2 = new XMLHttpRequest();
   } catch (trymicrosoft) {
     try {
       request = new ActiveXObject("Msxml2.XMLHTTP");
       request2 = new ActiveXObject("Msxml2.XMLHTTP");
     } catch (othermicrosoft) {
       try {
         request = new ActiveXObject("Microsoft.XMLHTTP");
         request2 = new ActiveXObject("Microsoft.XMLHTTP");
       } catch (failed) {
         request = false;
         request2= false;
       }  
     }
   }
   if (!request)
     alert("Error initializing XMLHttpRequest!");
        if (!request2)
     alert("Error initializing XMLHttpRequest!");
     
function doLoad(url1)
{ 
alert ("fsf");
var url="1.php";
url=url+"?id="+url1;
request.open("GET",url,true);
request.send(null);
request.onreadystatechange=stateChanged; 

}
function stateChanged() 
{ 
if (request.readyState==4 || request.readyState=="complete")
 { 
 document.getElementById("txtHint").innerHTML=request.responseText;

 } 
} 

function doLoad2(url1)
{ 
alert ("f2121");
var url="table.php";
url=url+"?id="+url1;
request.open("GET",url,true);
request.send(null);
request.onreadystatechange=stateChanged2; 
}
function stateChanged2() 
{ 
if (request.readyState==4 || request.readyState=="complete")
 { 
 document.getElementById("ttt").innerHTML=request.responseText;
 } 
}
function changeDisplay(id)
{
  var ul = document.getElementById('ul' + id).style;
  var li = document.getElementById('li' + id).style;
  if ( 'none' == ul.display )
  {
    ul.display = 'block';
    li.listStyleImage = 'url("open.gif")';
  }
  else
  {
    ul.display = 'none';
    li.listStyleImage = 'url("closed.gif")';
  }
}
</script>

Код

<html>
<head>
<title></title>
</head>
<body onLoad="doLoad('sklad'); doLoad2 ('00001')"> 
<h3 align="center"><strong><font size="+1" face="Arial, Helvetica, sans-serif">Список 
  товаров</font></strong> 
 <?php 
 session_start(); 
$bp = $_POST['bp'] ;
echo  $bp;
?>
</h3>
<form action = "17.php" name="myform" method="post" >
  <p>Поиск по параметру: 
    <select name="tip" onChange="doLoad(this.value)">
      <option value="sklad"  selected>Склад 
      <option value="name" >Наименование 
      <option value="model" >Модель 
      <option value="date">Дата прихода 
      <option value="edizm">Единица измерения 
      <option value="kolvo">Количество 
      <option value="price">Цена 
    </select>        
  <div id="txtHint"></div>
</form>
<p><strong><A href="excel.php">Excel</A></strong> </p>
  <td width="92%" align="center" valign="top">
<p>
<?php 
if ($bp=="ПЕТЕРБУРГ") $dbname = "BP";
if ($bp=="МОСКВА") $dbname = "BP_MSK";
if ($bp=="РОСТОВ") $dbname = "BP_RND";
if ($bp=="НОВОСИБИРСК") $dbname = "BP_SBR";
if ($bp=="ЕКАТЕРИНБУРГ" ) $dbname = "BP_eka";
$dbuser = "DBA";
$dbpasswd = "SQL";
setcookie("dbname", $dbname, time() + 3600*24);
$conn=odbc_connect($dbname , $dbuser , $dbpasswd );
if (!$conn) 
{
echo ("<P>В настоящий момент сервер базы данных не доступен, поэтому корректное отображение страницы невозможно.</P>");
exit();
}
echo  "<table border = 1 width = 100%>";
echo "<tr><td align=left valign=top width=50%>";

$sSQL="SELECT CLASSID, CLASSNAME FROM CLS_GOOD ORDER BY CLASSID ";
$result_tree=odbc_exec($conn, $sSQL);
$k=0;
for ($i=0; $i<odbc_num_rows($result_tree); $i++)
{
$k++;
$f=odbc_fetch_array($result_tree, $i+1);
$v=odbc_fetch_array($result_tree, $i+2);
$o=$f['CLASSID'];
$vc=strlen($v['CLASSID']);
$fc=strlen($f['CLASSID']);
$min1=($fc-$vc)/5;
if ($vc>$fc) {
echo "<li  id='li$k')'>\n";
echo ("<a id='$o' href=\"javascript: changeDisplay($k); \" onclick='doLoad2(this.id); '><font size=\"2\"><strong>".$f["CLASSNAME"]."</strong></font></A>"."  \n");
echo ("</li>");
echo ("<UL  id='ul$k' style='display: none;'>\n");
}
if ($vc<$fc) {
echo("<li  id = liil>\n");
echo ("<a id='$o' href='#' onclick='doLoad2(this.id); '><font size=\"2\"><strong>".$f["CLASSNAME"]."</strong></font></A>"."  \n");
echo ("</li>");
for ($j = 0; $j<$min1; $j++) echo("</UL>\n");
}
if ($vc==$fc) {
echo("<li  id = liil1>\n");
echo ("<a id='$o' href='#' onclick='doLoad2(this.id); '><font size=\"2\"><strong>".$f["CLASSNAME"]."</strong></font></A>"."  \n");
echo ("</li>");
}
}
echo "</td><td align=left valign=top width=50%>";
echo "<div id='ttt'></div>";
echo "</td></tr></table>";
odbc_close( $conn );
?>
  </p>
      <p align="center">&nbsp;</p>
</body>
</html>

PM MAIL ICQ   Вверх
Самозванка
Дата 24.9.2007, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Девушка в стиле IT
**


Профиль
Группа: Завсегдатай
Сообщений: 484
Регистрация: 5.9.2006
Где: USA

Репутация: нет
Всего: 40



Ну подскажите, плиз... Не могу найти причину, ошибок не выдает, функции по сути срабатывают...
PM MAIL ICQ   Вверх
dsCode
Дата 24.9.2007, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 565
Регистрация: 8.9.2007
Где: Saint-Petersburg

Репутация: 19
Всего: 26



Самозванка, много кода, сложно так сразу сказать. Если версии IE одинаковые - может патчи какие-нить разные. Объект-то хоть создается? Если даже на этом этапе ошибка, попробуйте другие префиксы ("MSXML3", "MSXML2", "MSXML", "Microsoft"). Понаставьте alert'ов после каждой строчки и продебажьте таким образом, где ошибка возникнет.

Это сообщение отредактировал(а) dsCode - 24.9.2007, 15:58


--------------------
the .code inside
:my music
PM MAIL WWW ICQ Jabber   Вверх
Самозванка
Дата 24.9.2007, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Девушка в стиле IT
**


Профиль
Группа: Завсегдатай
Сообщений: 484
Регистрация: 5.9.2006
Где: USA

Репутация: нет
Всего: 40



dsCode, да с помощью алертов посмотрела. получается что 
Код

if (request.readyState==4 || request.readyState=="complete")
 { 
 document.getElementById("ttt").innerHTML=request.responseText;
 } 
}


срабатывает через раз, как то странно. Проверила с помощью alert (request.responseText) .

При том на некоторых браузерах IE 6 всё оки ,а на других даже той же сборки не срабатывает.
PM MAIL ICQ   Вверх
kaa
Дата 22.11.2007, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 817
Регистрация: 5.11.2005

Репутация: 1
Всего: 2



Столкнулся с такой же бедой, только в Firefox-е :(

Вещь вообще актуальная, инфы по ней никакой ненашёл, притом неизвестно сколько пользователей может обломаться из-за таких косяков :(
PM MAIL   Вверх
Самозванка
Дата 22.11.2007, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Девушка в стиле IT
**


Профиль
Группа: Завсегдатай
Сообщений: 484
Регистрация: 5.9.2006
Где: USA

Репутация: нет
Всего: 40



Я разобралась с этим вопросом. Всё дело в кэше. Math.Random меня спас!
PM MAIL ICQ   Вверх
kaa
Дата 25.11.2007, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 817
Регистрация: 5.11.2005

Репутация: 1
Всего: 2



Самозванка, 

А если несложно - можно поподробнее, я с таким ниразу не сталкивался, Math.Random - это что?
PM MAIL   Вверх
dstorm81
Дата 26.11.2007, 08:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


бездельник
***


Профиль
Группа: Завсегдатай
Сообщений: 1178
Регистрация: 18.1.2006
Где: (16RU)

Репутация: 20
Всего: 39



kaa, 
Цитата(kaa @  25.11.2007,  13:34 Найти цитируемый пост)
А если несложно - можно поподробнее, я с таким ниразу не сталкивался, Math.Random - это что?

это так называемый запрет на кэширование 

примерно так
Код

var url="table.php";
url=url+"?id="+url1;
request.open("GET",url+'&amp;time='+Math.random(),true);

то бишь при запросе посылаем дополнительную переменную с рандомайзом
чтобы при каждом запросе урл немного изменялмя и приходили всегда НОВЫЕ данные, а не брались из кеша








--------------------
на форуме с 8.12.2002 (http://forum.vingrad.ru/index.php?act=ST&f=10&t=4874&st=0#)

PM   Вверх
UhaMurad
Дата 29.11.2007, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 22.9.2004
Где: Махачкала

Репутация: нет
Всего: нет



Обманывать таким образом броузер не очень хорошо, потому как браузер все равно будет кешировать страницы... его кеш будет забиваться впустую....

Лучше в php

Добавлено через 34 секунды
Обманывать таким образом броузер не очень хорошо, потому как браузер все равно будет кешировать страницы... его кеш будет забиваться впустую....

Лучше в php-нике посылать следующие заголовки:

Код

Header('Expires: Thu, 19 Feb 1998 13:24:18 GMT');
Header('Last-Modified: '.gmdate("D, d M Y H:i:s").' GMT');
Header('Cache-Control: no-cache, must-revalidate');
Header('Cache-Control: post-check=0, pre-check=0');
Header('Cache-Control: max-age=0');
Header('Pragma: no-cache');  


это запретит браузеру кэшировать страницу
PM MAIL WWW   Вверх
Самозванка
Дата 29.11.2007, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Девушка в стиле IT
**


Профиль
Группа: Завсегдатай
Сообщений: 484
Регистрация: 5.9.2006
Где: USA

Репутация: нет
Всего: 40



UhaMurad, в пхп не всегда срабатывают эти хэдеры почему то , в итоге и они установлены и рандомить числа все равно приходиться
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0519 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.