|
|
|
|
<script type="text/javascript" language="javascript">
// <![CDATA[
function CreateXmlHttp()
{
if(window.XMLHttpRequest) { return new XMLHttpRequest();}
try { return new ActiveXObject('MSXML2.XMLHTTP'); }
catch(e) { return new ActiveXObject('Microsoft.XMLHTTP'); }
}
var request = CreateXmlHttp()
function post_c(cat)
{
var div_text = document.getElementById('div_error');
//var selected = null;
selected = cat.value;
request.open('POST', 'cat_photos.php', true)
request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
request.onreadystatechange = function()
{
if ( request.readyState !== 4 ) return;
if ( !request.status || request.status == 200 || request.status == 304 || request.status == 0 )
{ document.getElementById('c').innerHTML = request.responseText;}
else { div_text.innerHTML = 'Ошибка запроса XMLHttpRequest'; }
}
request.send ('cat=' + selected);
return;
}
// ]]>
</script>
<form method="post" action="">
<select name="cat" id="cat" onchange="post_c(this);" onfocus="this.style.background='#68E060'" onblur="this.style.background='#FFFFFF'">
<optgroup label="Галерея">
<option value="19"> •Фото 1</option>
<option value="20"> •Фото 2</option>
<option value="26"> •Фото 3</option>
</optgroup>
</select>
<p id="c"></p>
|
В мозиле и в опере работает отлично а в ие 6 ничего не выводит и пишет ошибка сценария...я так думаю что проблема с id полями в тегах option но как исправить не знаю .. помогите кто знает как исправить | |
|
|
|
|
|
|
|
для: serjinio
(21.05.2009 в 22:13)
| | Я же вам давал КОНКРЕТНЫЙ РАБОТАЮЩИЙ ПРИМЕР - http://www.softtime.ru/forum/read.php?id_forum=4&id_theme=64986&page=1
Но...
Вам же обязательно надо и статусы проверить (а на фига это надо - вы хоть знаете?)
И вам же обязательно надо втюхать самый безобразно работающий метод Javascript'a try {} catch {}
И уж куда вам деться именно без метода POST?
Метод GET - это же для лохов, а вы у нас - "конкретный пацан", да? :-)
Умнее, чем есть на самом деле, надо прикидываться только тогда, когда тараканов травите - пусть тараканы думают, что вы умный и всё-равно так или иначе их "достанете" - не дустом, так дихлофосом... тогда они уйдут жить к соседу.
Во всех остальных случаях в жизни надо быть САМИМ СОБОЙ.
И в код "втюхивать" не всё то, что где-либо увидели, а только то, что ПОНИМАЕТЕ.
При использовании метода POST метод send ОБЯЗАТЕЛЬНО должен посылать параметры формы (name=value [&name2=value2...]).
Он у вас их и посылает.
В FireFox'e и в Opera.
А в 6-ом Explorer'e - не посылает.
Потому что Explorer умеет это делать только начиная с 7-й версии - можете удостовериться в этом. | |
|
|
|
|
|
|
|
для: PAT
(22.05.2009 в 00:10)
| | Переделал на GET все запустилось ,я и не знал о таких нюансах в ИЕ6 спасибо PAT за помощь | |
|
|
|
|
|
|
|
для: PAT
(22.05.2009 в 00:10)
| | Не может такого быть, я когда чат на аяксе делал, всё нормально работало с Пост методом и в ИЕ6. | |
|
|
|
|
|
|
|
для: sl1p
(22.05.2009 в 09:20)
| | аналогично. | |
|
|
|
|
|
|
|
для: psychomc
(22.05.2009 в 10:14)
| | Согласен. Именно - "аналогично".
Фразу "send was introduced in Windows Internet Explorer 7" разработчики этого самого Explorer'a на своём собственном сайте http://msdn.microsoft.com/en-us/library/ms536736(VS.85).aspx вставили по собственному скудоумию?
Разработчики, значится, даже и не догадывались, что send и так прекрасно работает и зря деньги от Билла Гейтса за новую версию получили? :-)
[поправлено модератором] | |
|
|
|
|
|
|
|
для: PAT
(22.05.2009 в 11:42)
| | у меня IE 6 и все прекрасно работает
передаю так
xmlHttp.open('POST', sendHandler, true);
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp.send(params);
|
Вы сами попробуйте и узнаете.
из Вас получился бы очень брутальный препод :) | |
|
|
|
|
|
|
|
для: PAT
(22.05.2009 в 11:42)
| | я что-то пропустил, Вы утверждаете, что в ИЕ6 принципиально нельзя передать данные методом POST при работе с AJAX? | |
|
|
|
|
|
|
|
для: PAT
(22.05.2009 в 11:42)
| | У меня тоже уже несколько лет назад POST срабатывал, когда еще и семерки не было. Нельзя верить всему, что Майкрософт пишет. | |
|
|
|
|
|
|
|
для: PAT
(22.05.2009 в 11:42)
| | Не обманывайте людей ; )
Сам писал для нескольких интернет-магазинов. http://pro-avtokresla.ru/catalog/romer/duo_plus и в 6 тоже работает! | |
|
|
|
|
|
|
|
для: Dimka31
(22.05.2009 в 18:29)
| | При передаче постом сервер отвечает нормально те
var response = request.responseText;
alert (response);
|
все выводится то что вернул сервер...но когда делаешь
{ document.getElementById('c').innerHTML = response;}
|
ИЕ6 пишет ошибка сценария...в мозиле и опере без проблем
В самом скрипте ..который подгружается отдаю правильные хидеры те чтоб не кэшировалось и кодировку..
header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header ("Cache-Control: no-cache, must-revalidate");
header ("Pragma: no-cache");
//header('Content-Type: text/html; charset=utf-8');
header('content-type: application/x-javascript; charset=utf-8');
|
не знаю точно в чем причина но переделал на гет
function post_c(x)
{
var div_text = document.getElementById('div_error');
request.open ('get','cat_photos.php?cat=' + encodeURIComponent (x.options [x.selectedIndex].value), true);
request.onreadystatechange = function()
{
if ( request.readyState !== 4 ) return;
if ( !request.status || request.status == 200 ) {document.getElementById('c').innerHTML = request.responseText; }
else { div_text.innerHTML = 'Ошибка запроса XMLHttpRequest'; }
}
request.send (null);return;
}
|
и ИЕ6 стал нормально выводить селекты...мистика.... | |
|
|
|
|
|
|
|
для: serjinio
(22.05.2009 в 21:39)
| | document.getElementById('c').innerHTML = response;
может проблема в самом id тогда? | |
|
|
|
|
|
|
|
для: psychomc
(23.05.2009 в 00:08)
| | "c" - опасный символ, на одной клавише и русская и латинская версии, легко ошибиться и невозможно заметить на глаз. | |
|
|
|
|
|
|
|
для: serjinio
(21.05.2009 в 22:13)
| |
function SendZapros(url) {
if(window.XMLHttpRequest) { // Для всех кроме IE
req=new XMLHttpRequest();
req.onreadystatechange=GetOtvet; // Функция принимающая ответ на запрос
req.open("GET",url,true);
req.send(null);
}
else if(window.ActiveXObject) {
req=new ActiveXObject("Microsoft.XMLHTTP"); // Для IE
if(req){
req.onreadystatechange=GetOtvet; // Функция принимающая ответ на запрос
try { req.open("GET",url,true); } catch(e) { ajaxerr++; }
try { req.send(null); }
catch(e) { ajaxerr++; if(ajaxerr<3) SendZapros(url+'&_c_='+Math.random()); else alert(e); }
}
else {
alert("Обьект не создан");
}
}
}
|
<input type="button" value=" Ok " onclick="ajaxerr=0;SendZapros('ajax.php?a='+document.getElementById('numa').value+'&b='+document.getElementById('numb').value);">
|
В некоторых IE6 у меня выпендривается AJAX, не хочет с первого раза нормально отрабатывать. Так вот как пришлось его лечить. | |
|
|
|