Помогите с AJAX

Статус
В этой теме нельзя размещать новые ответы.

avgaz

Участник
Регистрация
18 Окт 2006
Сообщения
189
Реакции
7
Имеется такой 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;
не чего не выводит
 
var url = MKAJAX_SITEPATH + 'index.php?ind=urlobox&op=ajax_savemsg';

Сюда уходит запрос?
Может быть на время проверки, вместо MKAJAX_SITEPATH, стоит более конкретно указать путь? Или вообще запрос передеават на файл без GET части, т.е. на index.php?
 
avgaz
а так трудно весь код выложить?
что в mkportal_Spinner_Show?
что за класс MKP_ajax ?
или ты думаешь что все такие гуру и умеют компилить в уме?
 
Советую поставить плагин firebug для Mozilla Firefox, он позволит тебе в леальном времени отлаживать javascript и смотреть какие запросы выполняются и что передается!!!
 
var url = MKAJAX_SITEPATH + 'index.php?ind=urlobox&op=ajax_savemsg';

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

Проблема в том что с путями всё нормально т.к данные из файла я получаю то есть путь верный проблема в том что данные туда не доходять или доходять но я не могу понять как их вывести.
avgaz
а так трудно весь код выложить?
что в mkportal_Spinner_Show?
что за класс MKP_ajax ?
или ты думаешь что все такие гуру и умеют компилить в уме?
Извиняюсь вы правы вот весь код
Код:
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;
}
Советую поставить плагин firebug для Mozilla Firefox, он позволит тебе в леальном времени отлаживать javascript и смотреть какие запросы выполняются и что передается!!!
Стоит только разобратся в нем с трудом получается. :(
 
код по прежнему неполный
ошибки :
1. не объявлен objMkspinner
2. не объявлены MKAJAX_IMAGES_PATH, MKAJAX_SITEPATH
3. неизвестный класс MkUtilsLib
4. отсутсвует в html коде идентификатор instchateditor

исправив их аякс заработал
правильно ли? не знаю! код не полный , возможно я, исправляя ошибки, сочинил что то не так.
 
код по прежнему неполный
ошибки :
1. не объявлен objMkspinner
2. не объявлены MKAJAX_IMAGES_PATH, MKAJAX_SITEPATH
3. неизвестный класс MkUtilsLib
4. отсутсвует в html коде идентификатор instchateditor

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

Код работает 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'];
В чем же они приходят?
 
$_POST['value'];

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

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

Огромное спасибо работает
только теперь с кодировкой вывода разобраться
делается так
@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 минуты
Вопрос снимается спасибо всем большое.
Тему можно удалить
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху