Помогите с AJAX

Тема в разделе "Другие языки", создана пользователем avgaz, 11 апр 2009.

Статус темы:
Закрыта.
Модераторы: Цукер
  1. avgaz

    avgaz

    Регистр.:
    18 окт 2006
    Сообщения:
    188
    Симпатии:
    6
    Имеется такой js код который должен отправить данные из формы
    Код:
    function instchatSave() {
        //MK_Spinner = new MKSpinner();
        mkportal_Spinner_Show();
        var url =  MKAJAX_SITEPATH + 'index.php?ind=urlobox&op=ajax_savemsg';
            message =document.getElementById('ta').value;
            if(message == "")
            {
                return false;
            }
            postData = "value="+encodeURIComponent(message).replace(/\+/g, "%2B");
          new MKP_ajax(url, {method: 'post', postBody: postData, onComplete: function(request) { instchatSaveComplete(request); }});
        }
    
    function instchatSaveComplete(request) {
        
            if(request.responseText.match(/<error>(.*)<\/error>/)) {
                message = request.responseText.match(/<error>(.*)<\/error>/);
                if(!message[1]) {
                    message[1] = "An unknown error occurred.";
                }
                alert("There was an error performing the update."+message[1]);
            }
            else if(request.responseText)
            {
                document.getElementById('instchat_2').innerHTML = request.responseText;
                 document.getElementById('ta').value = "";
            }
        mkportal_Spinner_Hide();
    }
    
    function instblockSubmit() {
        instchatSave();
        Switch_InstEd();
        return false;
    }
    сама форма
    Код:
    <form id="editor" name="editor" style="padding: 0px;" method="post" onsubmit="return instblockSubmit();">
    
                     <centr>
                <input type="text" id="ta" name="ta" style="width: 98%; border:0; padding: 4px; margin: 0;  background-color: #FFF;">            
                           </center>
                              </form>
            </td>
            <td id="instchatcontent" name="instchatcontent" style="width: 100%; padding:0px; border-bottom: 1px solid; background-color: #F5F5F5;">
            <div id="instchat_2" style="padding:4px; background-color: #F5F5F5; color: #333; font-size: 10px;">
        
            <br /></div>
    в каком виде ложны придти данные в файл совсем замучался не как понять не могу
    Код:
    $message .= $_POST['postData'];
             $message .= $_POST['ta'];
             $message .= $_POST['message'];
              $message .= $_POST['postBody'];
              $message .= $_POST['instchatSaveComplete'];
              echo  $message;
    не чего не выводит
     
  2. OnArs

    OnArs

    Регистр.:
    30 авг 2008
    Сообщения:
    259
    Симпатии:
    74
    var url = MKAJAX_SITEPATH + 'index.php?ind=urlobox&op=ajax_savemsg';

    Сюда уходит запрос?
    Может быть на время проверки, вместо MKAJAX_SITEPATH, стоит более конкретно указать путь? Или вообще запрос передеават на файл без GET части, т.е. на index.php?
     
  3. Виллен

    Виллен

    Регистр.:
    12 мар 2009
    Сообщения:
    236
    Симпатии:
    60
    avgaz
    а так трудно весь код выложить?
    что в mkportal_Spinner_Show?
    что за класс MKP_ajax ?
    или ты думаешь что все такие гуру и умеют компилить в уме?
     
  4. socker

    socker Постоялец

    Регистр.:
    15 сен 2007
    Сообщения:
    109
    Симпатии:
    17
    Советую поставить плагин firebug для Mozilla Firefox, он позволит тебе в леальном времени отлаживать javascript и смотреть какие запросы выполняются и что передается!!!
     
  5. avgaz

    avgaz

    Регистр.:
    18 окт 2006
    Сообщения:
    188
    Симпатии:
    6
    Проблема в том что с путями всё нормально т.к данные из файла я получаю то есть путь верный проблема в том что данные туда не доходять или доходять но я не могу понять как их вывести.
    Извиняюсь вы правы вот весь код
    Код:
    function mkportal_Spinner_Show() {
        if(!objMkspinner) {
            var image = MKAJAX_IMAGES_PATH + "loadspin.gif";;
            var height = 180;
            var width = 180;
            objMkspinner = document.createElement("div");
            objMkspinner.style.position = "absolute";
            objMkspinner.style.zIndex = 1000;
            objMkspinner.style.textAlign = "center";
            objMkspinner.style.verticalAlign = "middle";
            objMkspinner.innerHTML = "<div style=\"text-align: center; border:2px solid #698490; padding: 6px; background: #FFF;\"><br /><img src=\"" + image + "\" border=\"\"><br /><br /><b>... Loading... </b><br /></div>";
            objMkspinner.style.width = width + "px";
            objMkspinner.style.height = height + "px";
            objMkspinner.style.display = 'none';
            objMkspinner.id = "mkspinner";
            var owner = document.getElementsByTagName("body").item(0);
            owner.insertBefore(objMkspinner, owner.firstChild);
        }
        var arrayPageSize = MkUtilsLib.getPageSize();
        var arrayPageScroll = MkUtilsLib.getPageScroll();
        var top = arrayPageScroll[1] + ((arrayPageSize[3] - 35 - 180) / 2);
        var left = ((arrayPageSize[0] - 20 - 180) / 2);
        objMkspinner.style.top = top + "px";
        objMkspinner.style.left = left + "px";
        objMkspinner.style.display = 'block';
    }
    
    function mkportal_Spinner_Hide() {
         document.getElementById('mkspinner').style.display = 'none';
    }
    
    // Ajax Core Engine
    function MKP_ajax(url, options) {    
    
        var mka_postData = options.postBody || '';
        var mka_method = options.method || 'post';
        var mka_Complete = options.onComplete || null;
        var mka_update = options.update || null;
        var mka_sendReq = Mka_getXmlHttpRequestObject();
    
        function Mka_returnOut() {
    
            if (mka_sendReq.readyState == 4 && mka_sendReq.status == 200) {
                if (mka_Complete) 
                    setTimeout(function(){mka_Complete(mka_sendReq);}, 10);
                if (mka_update)
                    setTimeout(function(){mka_update.innerHTML = mka_sendReq.responseText;}, 10);
                mka_sendReq.onreadystatechange = function(){};
            }
    
        }
    
        function Mka_start(url){
    
            mka_sendReq.open(mka_method, url, true);
            mka_sendReq.onreadystatechange = Mka_returnOut;
            if (mka_method == 'post') {
                mka_sendReq.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
                if (mka_sendReq.overrideMimeType) mka_sendReq.setRequestHeader('Connection', 'close');
            }
            mka_sendReq.send(mka_postData);
    
        }
        
    
        function Mka_getXmlHttpRequestObject() {
            if(window.XMLHttpRequest) {    return new XMLHttpRequest(); }
            else if(window.ActiveXObject) {
                try { req = new ActiveXObject('Msxml2.XMLHTTP.4.0'); } catch(e) { try {    req = new ActiveXObject('Microsoft.XMLHTTP'); } catch(e) {req = false; }} return req; }
            else {    return false; }
        }
        
        Mka_start(url);
    };
    function SwitchMenu(obj) {
        if (document.getElementById) {
            var el = document.getElementById(obj);
            var ar = document.getElementById("cont").getElementsByTagName("div");
            if (el.style.display == "none") {
                for (var i=0; i<ar.length; i++) {
                    ar[i].style.display = "none";
                }
                el.style.display = "block";
            } else {
                el.style.display = "none";
            }
        }
    }
    // Functions for Ajax shoutbox
    function Switch_InstEd()  {
        var curstate = document.getElementById('instchateditor').style.display;
        if (curstate == 'none') {
            document.getElementById('instchatcontent').style.display = 'none';
            document.getElementById('instchateditor').style.display = '';
            document.editor.ta.focus();
        } else {
                document.getElementById('instchateditor').style.display = 'none';
            document.getElementById('instchatcontent').style.display = '';
            }
    }
    
    function instchatSave() {
        //MK_Spinner = new MKSpinner();
        mkportal_Spinner_Show();
        var url =  MKAJAX_SITEPATH + 'index.php?ind=urlobox&op=ajax_savemsg';
            message =document.getElementById('ta').value;
            if(message == "")
            {
                return false;
            }
            postData = "value="+encodeURIComponent(message).replace(/\+/g, "%2B");
          new MKP_ajax(url, {method: 'post', postBody: postData, onComplete: function(request) { instchatSaveComplete(request); }});
        }
    
    function instchatSaveComplete(request) {
        
            if(request.responseText.match(/<error>(.*)<\/error>/)) {
                message = request.responseText.match(/<error>(.*)<\/error>/);
                if(!message[1]) {
                    message[1] = "An unknown error occurred.";
                }
                alert("There was an error performing the update."+message[1]);
            }
            else if(request.responseText)
            {
                document.getElementById('instchat_2').innerHTML = request.responseText;
                 document.getElementById('ta').value = "";
            }
        mkportal_Spinner_Hide();
    }
    
    function instblockSubmit() {
        instchatSave();
        Switch_InstEd();
        return false;
    }
    
    Стоит только разобратся в нем с трудом получается. :(
     
  6. Виллен

    Виллен

    Регистр.:
    12 мар 2009
    Сообщения:
    236
    Симпатии:
    60
    код по прежнему неполный
    ошибки :
    1. не объявлен objMkspinner
    2. не объявлены MKAJAX_IMAGES_PATH, MKAJAX_SITEPATH
    3. неизвестный класс MkUtilsLib
    4. отсутсвует в html коде идентификатор instchateditor

    исправив их аякс заработал
    правильно ли? не знаю! код не полный , возможно я, исправляя ошибки, сочинил что то не так.
     
  7. avgaz

    avgaz

    Регистр.:
    18 окт 2006
    Сообщения:
    188
    Симпатии:
    6
    Код работает MKAJAX_IMAGES_PATH, MKAJAX_SITEPATH директоря картинок, директория сайта
    objMkspinner вывод изображения о процессе
    Все это работает тоесть идет отсылка в файл и вывод изфайла
    Проблема в том что я не понимаю в каком виде приходят данные в файл
    уже всё перебрал
    Код:
    $message .= $_POST['ta'];
             $message .= $_POST['message'];
              $message .= $_POST['postBody'];
              $message .= $_POST['instchatSaveComplete'];
      
              $message .= $mkportals->input['mka_postData'];
              $message .= $_GET['ta'];
              $message .= $_POST['instchateditor'];
    
            $message .= $mkportals->input['instchatSaveComplete'];
            $message .= $mkportals->input['ta'];
            $message .= $mkportals->input['instchateditor'];
            $message .= $_GET['postData'];
             $message .= $_GET['ta'];
             $message .= $_GET['message'];
              $message .= $_GET['postBody'];
    
    В чем же они приходят?
     
  8. Виллен

    Виллен

    Регистр.:
    12 мар 2009
    Сообщения:
    236
    Симпатии:
    60
    $_POST['value'];

    там в коде есть такая штука:
    postData = "value="+encodeURIComponent(message).replace(/\+/g, "%2B");
     
  9. avgaz

    avgaz

    Регистр.:
    18 окт 2006
    Сообщения:
    188
    Симпатии:
    6
    Огромное спасибо работает
    только теперь с кодировкой вывода разобраться
    делается так
    @header("Content-type: text/html; charset=windows-1251");
    @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-store, no-cache, must-revalidate');
    @header('Cache-Control: post-check=0, pre-check=0', false);
    @header('Pragma: no-cache');
    перед выводом на экран
    но выводит в UTF
    если сменить @header("Content-type: text/html; charset=UTF-8");
    то из бд выводит нормально но вывод из языкового файла который в win уже плохо
    Что можете посоветовать

    Добавлено через 23 минуты
    Вопрос снимается спасибо всем большое.
    Тему можно удалить
     
Статус темы:
Закрыта.