Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > Загруска страницы методом POST (JavaScript)


Автор: 911 25.8.2006, 16:43
Значит суть и проблема такова. Имееться страничка index.html, в левой части кнопочки а в правой пустое место, на нем и отображается наша страничка методом XML POST, без ее перезагрузки. В коде использую javaScript. 
Вот значит кнопка 
Код

<SPAN onmouseover="lightup('pic10')" style="CURSOR: pointer" onclick="LINK_ajax('main.htm','main_div');" onmouseout="turnoff('pic10')">
<IMG height=57 src="image/main-1.gif" width=323 border=0 
name=pic10></SPAN> 

Сделана графический, с элементом onmouseover и onmouseout. при нажатии получаем: onclick="LINK_ajax('main.htm','main_div');" ,
вот тут и запускается мой скрипт  smile 

Код

function LINK_ajax(http, div_name) { //funзгo para links

    var LINK_xmlhttp = false;

    try { LINK_xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }
    catch (e) { try { LINK_xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
    catch (e) { try { LINK_xmlhttp = new XMLHttpRequest(); }
    catch (e) { LINK_xmlhttp = false; }}}
    if (!LINK_xmlhttp) return null;

    document.getElementById('load_div').style.visibility="visible";
    switch_banner();
    

    LINK_xmlhttp.open("GET", http, true);

    LINK_xmlhttp.onreadystatechange = function() {
        if (LINK_xmlhttp.readyState == 4) {
            document.getElementById('load_div').style.visibility="hidden";

            if (LINK_xmlhttp.responseText.indexOf("<script type=\"text/javascript\">") > -1) {
                var x = LINK_xmlhttp.responseText.indexOf("<script type=\"text/javascript\">") + "<script type=\"text/javascript\">".length;
                var y = LINK_xmlhttp.responseText.indexOf("</script>") - x;
                eval(LINK_xmlhttp.responseText.substr(x, y));
            }

            if (LINK_xmlhttp.responseText.indexOf('ALERT|') > -1) 
                window.alert(LINK_xmlhttp.responseText.substr(LINK_xmlhttp.responseText.indexOf('|') + 1));
            else
                document.getElementById(div_name).innerHTML = LINK_xmlhttp.responseText + ' ';
        }
    }

    LINK_xmlhttp.send(null);  

    return false;
}

function POST_ajax(http, div_name, frm_name) { //funзгo para posts

    var POST_xmlhttp = false;
    var frm = false
    var url = "";


    try { POST_xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }
    catch (e) { try { POST_xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
    catch (e) { try { POST_xmlhttp = new XMLHttpRequest(); }
    catch (e) { POST_xmlhttp = false; }}}
    if (!POST_xmlhttp) return null;

    frm = document.getElementById(frm_name);

    document.getElementById('load_div').style.visibility="visible";

    url = "frm_name=" + frm_name;

    for (i = 0; i < frm.elements.length; i++) {
        frm.elements[i].disabled = true;
        if (frm.elements[i].type == "checkbox") {
            if (frm.elements[i].checked)
                frm.elements[i].value = 1;
            else
                frm.elements[i].value = 0;
        }
        url = url + "&" + frm.elements[i].name + "=" + escape(frm.elements[i].value);
    }


    POST_xmlhttp.open("POST", http, true);

    POST_xmlhttp.onreadystatechange = function() {
        if (POST_xmlhttp.readyState == 4) {
            document.getElementById('load_div').style.visibility="hidden";

            for (i = 0; i < frm.elements.length; i++) {
                if (frm.elements[i].type == "checkbox")
                    frm.elements[i].checked = false;
                if (frm.elements[i].type == "password")
                    frm.elements[i].value = "";
                frm.elements[i].disabled = false;
            }

            if (POST_xmlhttp.responseText.indexOf("<script type=\"text/javascript\">") > -1) {
                var x = POST_xmlhttp.responseText.indexOf("<script type=\"text/javascript\">") + "<script type=\"text/javascript\">".length;
                var y = POST_xmlhttp.responseText.indexOf("</script>") - x;
                eval(POST_xmlhttp.responseText.substr(x, y));
            }

            if (POST_xmlhttp.responseText.indexOf('ALERT|') > -1) {
                var x = POST_xmlhttp.responseText.indexOf('ALERT|') + "ALERT|".length;
                var y = POST_xmlhttp.responseText.indexOf('|ENDALERT') - x;
                window.alert(POST_xmlhttp.responseText.substr(x , y));
            } else
                document.getElementById(div_name).innerHTML = POST_xmlhttp.responseText + ' ';
        }
    }

    POST_xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    POST_xmlhttp.setRequestHeader("Content-length", url.length);
    POST_xmlhttp.setRequestHeader("Connection", "close");
    POST_xmlhttp.send(url);  

    return false;
}



Значит заранее готовая страничка, в моем случае это main.htm, загружается в отведеном месте... Для него я использую даный код:
Код

<DIV class=style1 id=main_div></DIV>
<DIV id=load_div><SPAN class=style1>&nbsp;Loading...&nbsp;</SPAN> </DIV>
<script type=text/javascript>LINK_ajax('main.htm', 'main_div');</SCRIPT>

Вот тут то и начинается вся проблема  smile  Если страница main.htm, имеет русский текст, то он отобразиться в виде Вопросов "??????". С английским все нормально! Как сделать нормальное отображение русского текста?  smile 

Автор: Black 25.8.2006, 17:40
Выводи страницу main.htm и отсылай заголовок с указанием ЕЕ кодировки!!!

Например в php это можно сделать так:

Цитата

<?
header("Content-type: text/plain; charset=windows-1251");
?>

содержимое main.htm


разумеется, поставь свою кодировку, если она не в windows-1251
Тогда проблема с некорректным отображением русских символов должна исчезнуть.


Автор: 911 25.8.2006, 18:02
Цитата

Выводи страницу main.htm и отсылай заголовок с указанием ЕЕ кодировки!!!

Например в php это можно сделать так:


Цитата 

<?
header("Content-type: text/plain; charset=windows-1251");
?>

содержимое main.htm
 



разумеется, поставь свою кодировку, если она не в windows-1251
Тогда проблема с некорректным отображением русских символов должна исчезнуть.


Что-то не особо понял smile  Я в PHP полный 0, я его не знаю, по этому делаю страничке на HTML с Использованием JavaScript. Жаль давно изусчал все это, и уже оч много забыл... да и практики давно небыло...
Значит Вы предлогаете вствить Этот код в main.htm, но вставив его туда, проблема не исчезла все то же саомое...=\ 

Автор: 911 26.8.2006, 00:14
Вобщем долго парился... не чего не выходит... общался со знающими людьми, но может они и не особо знающиеся... но пришли к выводу, что делать какие изменения на самой страничке main.htm или пусть даже main.php нет! тут надо что то делать в коде... 
//<meta http-equiv="Content-Type" content="text/html" charset=windows-1251">'); -даже такой подход изменения кодировки в JS не подошел.
- кто нибудь может внясти поправку в коде JS?  smile 
Помогите пожалуйста, а то я уже мучаюсь с ним несколько дней, думал сам справлюсь.... увы не расчитал силы  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)