Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Применение библиотек > jsHttpRequest проблемы с дочерним окном


Автор: ArsNov 5.9.2008, 15:01
jsHttpRequest не передаются данные из дочернего окна

Есть главное окно, в нем получаем результат дочернего окна:
Код

added=window.showModalDialog("test.html", "wind1", "width=200,height=100,resizable=no,scrollbars=no,menubar=no");
    
        if (added!=null)
        {
                var value=new Object();
                value["data"]=new Array();
                value["data"]["first"]=added;    
                doLoad(value);    //посылаем на сервер
        }

В дочернем окне test.html генерируются данные в качестве результата:

Код

//...
var value=new Array();
value["flag"]="true";
value["0"]='1';
value["1"]='2';
window.returnValue=value;

close();



После закрытия дочернего окна эти данные попадают в added, передаю на сервер
и получаю в $_REQUEST следующее:
[q] => 
  [data] => 
    [first] => 
Почему-то  не передались данные в first, почему? В js этот first не пустой
Причем если заменить строку value["data"]["first"]=added; на value["data"]["first"]=added["flag"]; то это значение передается корректно. Т.е. при передаче данных исчезает массив полученный из дочернего окна.
Помогите найти ошибку.
Спасибо

Автор: Nigel 6.9.2008, 14:18
Можете полностью весь код привести?

Автор: ArsNov 8.9.2008, 14:26
Увы, не могу, он очень большой. Проблема именно в дочернем окне, результат, который им возвращается в отладке виден  нормально, но когда я передаю его в httpreq на сервер то эти данные исчезают. Другие данные уходят нормально  smile 

Автор: ArsNov 8.9.2008, 15:41
Попробовал показать то что есть:
Вот код серверной части в отрывках:

Эта функция срабатывает при нажатии на кнопку:


Код

function show_dialog_add(link)
{
    var added=new Object();
    var added=window.showModalDialog(event.srcElement.parentElement.parentElement.add_module, "wind1", "width=200,height=100,resizable=no,scrollbars=no,menubar=no");

                var value=new Object();
                value["test"]="test";
                value["data"]= added;
    
                doLoad(value);
}



Вот код которые выполняет работу с jsHttpRequest
Код

function doLoad(value) 
    {
        // Create new JsHttpRequest object.
        var req = new JsHttpRequest();
        // Изменение сосотояния ответа.
        req.onreadystatechange = function() 
            {
                created_elements=new Array();   //Обнуляем массив старых элементов. Теперь в этом массиве буду храниться новые элементы
                
                if (req.readyState == 4)    //Пришел ответ
               {
                //.......тут обработка ответа
              }
     
        // Отправка запроса
        req.open(null, 'indexs.php', true);
        req.send( { q: value } );
    }




Вот код дочернего окна:


Код

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="expires" content="0">


</head>


<div id="test">fgfg</div>
<script language="JavaScript">

function closeIt() {

    var value=new Array();
    value["q"]="asdasd";
    value["q2"]="asdasd";
    window.returnValue=value;

    alert('Данные успешно сохранены');
    close();
}

</script>
<center><form>
<input type=button value="Добавить запись" onClick="closeIt()">
<input type=button value="Отменить" onClick="window.close();"></form>


</center>
</html>


._hash2query очищает мой массив
В строке 
if(!this._hash2query(_7,null,_8,_9)){
return;
}
Почему?

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