За последние 24 часа нас посетил 17161 программист и 1248 роботов. Сейчас ищут 949 программистов ...

ajax, php и firebird

Тема в разделе "JavaScript и AJAX", создана пользователем Taliya, 30 май 2007.

  1. Taliya

    Taliya Активный пользователь

    С нами с:
    30 май 2007
    Сообщения:
    2
    Симпатии:
    0
    Помогите пожалуйста разобраться, что не так :) Я только учусь пользоваться аяксом, пытаюсь достать хоть какие-то данные из БД и вывести их на страничку. При вводе индекса, осуществляется обращение к БД и выводится город по этому индексу.
    есть index.html
    --------------------------------------------------
    <!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>
    <title>AJAX with PHP: Quickstart</title>
    <meta content="no-cache" charset="utf-8">
    <script type="text/javascript" src="quickstart.js"></script>
    </head>
    <body onload='process()'>
    Поиск города по индексу:
    <input type="text" id="myName" />
    <div id="divMessage" />
    </body>
    </html>
    ---------------------------------------------------------------
    собственно скрипт (взят из книжки, знаю что многого нет, главное чтобы хоть заработало, родной пример из книги без БДЖ работает)
    // stores the reference to the XMLHttpRequest object
    var xmlHttp = createXmlHttpRequestObject();

    // retrieves the XMLHttpRequest object
    function createXmlHttpRequestObject()
    {
    // will store the reference to the XMLHttpRequest object
    var xmlHttp;
    // if running Internet Explorer
    if(window.ActiveXObject)
    {
    try
    {
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch (e)
    {
    xmlHttp = false;
    }
    }
    // if running Mozilla or other browsers
    else
    {
    try
    {
    xmlHttp = new XMLHttpRequest();
    }
    catch (e)
    {
    xmlHttp = false;
    }
    }
    // return the created object or display an error message
    if (!xmlHttp)

    alert("Error creating the XMLHttpRequest object.");
    else
    return xmlHttp;
    }

    // make asynchronous HTTP request using the XMLHttpRequest object
    function process()
    {
    // proceed only if the xmlHttp object isn't busy
    if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
    {
    // retrieve the name typed by the user on the form
    name = encodeURIComponent(document.getElementById("myName").value);
    // execute the quickstart.php page from the server
    xmlHttp.open("GET", "quickstart.php?name=" + encodeURIComponent(name), true);
    // define the method to handle server responses
    xmlHttp.onreadystatechange = handleServerResponse;
    // make the server request
    xmlHttp.send(null);
    }
    else
    // if the connection is busy, try again after one second
    setTimeout('process()', 1000);
    }

    // executed automatically when a message is received from the server
    function handleServerResponse()
    {
    // move forward only if the transaction has completed
    if (xmlHttp.readyState == 4)
    {
    // status of 200 indicates the transaction completed successfully
    if (xmlHttp.status == 200)
    {
    // extract the XML retrieved from the server
    xmlResponse = xmlHttp.responseXML;
    // obtain the document element (the root element) of the XML structure
    xmlDocumentElement = xmlResponse.documentElement;
    // get the text message, which is in the first child of
    // the the document element
    helloMessage = xmlDocumentElement.firstChild.data;
    // update the client display using the data received from the server
    document.getElementById("divMessage").innerHTML =
    '<i>' + helloMessage + '</i>';
    // restart sequence
    setTimeout('process()', 1000);
    }
    // a HTTP status different than 200 signals an error
    else
    {
    alert("There was a problem accessing the server: " + xmlHttp.statusText);
    }
    }
    }
    -------------------------------------------------------
    и PHP
    // retrieve the user name
    include ('config.php');
    header('Content-Type: text/xml');
    // generate XML header
    echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
    // create the <response> element
    echo '<response>';
    $name=$_GET('name');
    $ibase = ibase_connect(DB_HOST, DB_USER, DB_PASSWORD);
    $query = 'Select CITY from POSTOFF where PO_IND like '$name'';
    $result = ibase_query($ibase, $query);
    while ($row = ibase_fetch_assoc($result))
    $output = $row["CITY"];
    echo 'Это индекс города, ' . $output . '!';
    else if (trim($output) == '')
    echo 'Введите индекс!';
    // close the <response> element
    echo '</response>';
    ----------------------------------------------------------
    Скорей всего ошибка либо в логике всего дела, либо в кодировках, просто не передается параметр правильно. IE выдает ошибку "Требуется объект." HELP!!! Очень надо - на работе меня уже медленно жуют :)
     
  2. dark-demon

    dark-demon Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    1.920
    Симпатии:
    1
    Адрес:
    леноград
    вот бы и мне платили за то, чтоб я задавал вопросы на форуме...
     
  3. Taliya

    Taliya Активный пользователь

    С нами с:
    30 май 2007
    Сообщения:
    2
    Симпатии:
    0
    По-моему всем как-то нужно учиться и спрашивать что-то, что ты не знаешь, абсолютно не стыдно. А насчет оплаты - значит такая ситуация устаивает мое руководство! Лучше когда человек пытается что-то делать, чем штаны просиживает. ИМХО конечно. Спасибо за помощь!!!
     
  4. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    Талия, вы даже ниасилили отформатировать код.

    Учитесь отлаживать программу, смотрите что куда передается на каком этапе и где теряется.
    Есть разница между "нашел вот тут непонятку, непонял как вылечить" и "ну-ка сделайте фсе за меня".