Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Ajax без XML


Автор: Alix36 2.3.2007, 22:53
Вопрос собственно почему неработает))
Чтото в JS т.к. в скрытый фрейм вся инфа выводится.
Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
    <title>Hidden IFrame Example 1</title>
    <script type="text/javascript">
        function requestCustomerInfo() {
            top.frames["hiddenFrame"].location = "GetCustomerData.php";
        }
        
        function displayCustomerInfo(sText) {
            var divCustomerInfo = document.getElementById("divCustomerInfo");
            divCustomerInfo.innerHTML = sText;
        }
    </script>
</head>
<body>
    <p>Enter customer ID number to retrieve information:</p>
    <p>Customer ID: <input type="text" id="txtCustomerId" value="" /></p>
    <p><input type="button" value="Get Customer Info" onclick="requestCustomerInfo()" /></p>
    <div id="divCustomerInfo"></div>
    <iframe src="about:blank" name="hiddenFrame" width="0" height="0" frameborder="0"></iframe>
</body>
</html>

Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
    <title>Get Customer Data</title>
<?php

    //variable to hold customer info
    $sInfo = "";
    
    //database information
     $sDBServer = "localhost";
    $sDBName = "root";
    $sDBUsername = "root";
    $sDBPassword = "";

    //create the SQL query string
  
              
    //make the database connection
    $oLink = mysql_connect($sDBServer,$sDBUsername,$sDBPassword);
    @mysql_select_db($sDBName) or $sInfo = "Unable to open database";
        
    if($sInfo == '') {
        if($oResult = mysql_query("SELECT * FROM gam_item WHERE idpes='3'") and mysql_num_rows($oResult) > 0) {
        ?> <table width="100%" height="37%" border="0" align="left"  cellpadding="0" cellspacing="0"><?
        while($d=mysql_fetch_row($oResult))
{
$qu=mysql_query("SELECT * FROM s_item WHERE id=\"$d[1]\"");
$item_arry=mysql_fetch_array($qu);
?>
            <tr>
            <td width="25" height="25" align="left" valign="top"> <img src="/img/main_item/item/<?php echo $item_arry['img']; ?>" width="25" height="25">
            </td>
            <td width="136" align="left" valign="top"><b><? echo $item_arry['name']; ?></b></td>
              <td align="left" valign="top">
                <input type="checkbox" name="<? echo $d[0];?>" value="d" ><img src="img/main_item/icon/bibl.gif" width="18"  height="18">
  <img src="img/main_item/icon/i_action_do.gif" width="17" height="17" id="do<? echo $d[0]; ?>" onclick="javascript:item_do(<? echo $d[4];?>,<? echo $d[0]; ?>);"></td>
            <td width="1"  height="1">
            <tr>
            <?
}
?></table><?
        } else {
            $sInfo = "Customer with ID $sID doesn't exist.";
        }
    }
    mysql_close($oLink);

?>
    
    <script type="text/javascript">
        window.onload = function () {
            var divInfoToReturn = document.getElementById("divInfoToReturn");
            parent.displayCustomerInfo(divInfoToReturn.innerHTML);
        };
    
    </script>

</head>
<body>
    <div id="divInfoToReturn"><?php echo $sInfo ?></div>
</body>
</html>

в РНР нет ошибок, скорее всего чтото нето в идентефикации слоев.
Скрипт не мой! я его из книжки взял.
Мне кажется что тут чтото не так...
Код

    <script type="text/javascript">
        window.onload = function () {
            var divInfoToReturn = document.getElementById("divInfoToReturn");
            parent.displayCustomerInfo(divInfoToReturn.innerHTML);
        };
    
    </script>

Автор: Mymik 3.3.2007, 00:22
Маленький вопрос... а что собственно не работает ??? :о) Т.е. где ошибка или что вообще ???

Автор: Alix36 3.3.2007, 11:51
из скрытово фреейма инфа не передается в видимый

Автор: Alix36 5.3.2007, 18:37
Неужто такая тяжкая задача)

Автор: Sardar 5.3.2007, 20:43
Цитата(Alix36 @  5.3.2007,  17:37 Найти цитируемый пост)
Неужто такая тяжкая задача) 

Нет, просто на первый взгляд код корректный, значит как обычно лажа на сервере. Отркой по прямой ссылке GetCustomerData.php и убедись, что получаешь верную страницу и window.onload отрабатывает. Открой в лисе или в Опере, там есть консоль JS (или FireBug и прочие утилиты если поставишь), в ней описание ошибки если она есть.

Автор: Alix36 6.3.2007, 15:38
1.онлоад рботает, при запуске РНР отдельно следующая ошибка parent.displayCustomerInfo is not a function 
строка 66 php 
т.е нет такой ункции. Она есть только в htm файле.  
2. после  добавления этой функции в php  она говорит об оцутствии соответствующего слоя (что логично=) )
если добавить слой, то весь смысл Ajax потерян.
3.HTML неработал не в одном из случаев, ошибок не выдавал.

Автор: Alix36 9.3.2007, 17:15
О! нашел. 
PHP ошибка.
обьяснять небуду,  выложу рабочий код
если нужно обьяснить в ПМ
Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
 <script type="text/javascript">
        window.onload = function () {
            var inv1php = document.getElementById("inv1php");
            parent.inv1(inv1php.innerHTML);
        };
    </script>
</head>
<body>
    <div id="inv1php">
<?php
    //database information
     $sDBServer = "localhost";
    $sDBName = "";
    $sDBUsername = "";
    $sDBPassword = "";
 //make the database connection
    $oLink = mysql_connect($sDBServer,$sDBUsername,$sDBPassword);
    @mysql_select_db($sDBName) or $sInfo = "Unable to open database";
        
   
        if($oResult = mysql_query("SQL запрос") and mysql_num_rows($oResult) > 0)
         {
        ?>
       ТУТ выводим что хотим увидить в  главном файле<?
        } 
    mysql_close($oLink);

?>
    </div>
</body>
</html>

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