从数据库请求接收数据的ajax不起作用

时间:2012-10-02 06:42:56

标签: javascript mysql ajax request xmlhttprequest

我是ajax领域的初学者,我真的需要帮助。

事实上,我已经完成了从数据库接收一些数据的查询。

这里有标题:

<script type="text/javascript">

    <?php if(isset($_GET['p']) AND $_GET['p']=='create_dossier') {?>
    function writeInDiv(text){
        var objet = document.getElementById('code_client');
        objet.innerHTML = text;
    }

    function ajax()
    {
        var xhr=null;

        if (window.XMLHttpRequest) {
            xhr = new XMLHttpRequest();
        }
        else if (window.ActiveXObject)
        {
            xhr = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xhr.open("GET", "ajaxclient.php?code_client=<?php echo $_GET['code_client'] ; ?>", false);
        xhr.send(null);
        writeInDiv(xhr.responseText);
            setInterval("ajax()",5000);
    }
    <?php }?>
    </script>
页面上的

ajaxclient.php我有以下代码:

<?php require_once('Connections/localhost.php'); ?><?php mysql_select_db( $database_localhost ); ?>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
</head>
<body>
 <table width="100%" border="0" id="box-table-a">
  <tr>
    <th scope="col" width="15%">CODE CLIENT</th>
    <th scope="col" width="15%">RAISON SOCIALE</th>
    <th scope="col" width="55%">ADRESSE </th>
    <th scope="col" width="15%">ACTION</th>
  </tr>
<?php 
$code_client=$_GET["code_client"];
      $sql="SELECT * FROM `client` INNER JOIN `adresse_client` ON `client`.`code_client` = `adresse_client`.`code_client` WHERE `client`.`code_client`='".$code_client."'";
        if (mysql_errno() <> 0) 
        {
            echo mysql_error(),'<br>',$sql,'<br>';
            die();
        } 
        $result=mysql_query($sql);
        while($donnees=mysql_fetch_assoc($result))
        {?>

  <tr>
    <td><?php echo $donnees['code_client'] ; ?></td>
    <td><?php echo $donnees['raison_sociale'] ; ?></td>
    <td><p align="left">&nbsp;<?php echo $donnees['rue'].'<br>'.$donnees['complement1'].'<br>'.$donnees['complement2'].'<br>'.$donnees['code_postal'].' - '.$donnees['ville'].'<br>'.$donnees['pays'] ; ?></p></td>
    <td><a href="index.php?p=create_dossier2&amp;code_client=<?php echo $data['code_client'] ; ?>"><img src="images/001_18.gif" width="24" height="24" /></td>
  </tr>
 <?php }
?></table>
</body>
</html>

名为create_dossier.php的页面包含:

<form action="#" method="get"><fieldset>
 <legend>CR&Eacute;ANCIER</legend>
 <br />
 <label>Raison sociale:</label><input type="hidden" name="p" value="create_dossier" /> <input type="text" name="code_client" onkeypress="form.submit()" /></fieldset><p align="center"><input type="submit" name="enreg" value="Chercher !" /></form>

我想要的是在不发送页面的情况下显示数据,而事实是它总是在返回任何数据之前发送表单。为此,我不需要ajax。

我真的不知道有什么不对,以及如何纠正它。

2 个答案:

答案 0 :(得分:1)

实际上,你应该阻止表单提交:

onclick="return doSomeAction();"

function doSomeAction() {
    // create XHR object
    // send data
    // handle response
    return false;
}
在你的情况下,

doSomeAction()= ajax() 不要忘记返回虚假

答案 1 :(得分:1)

您应该将查询结果作为XML或JSON返回,并在调用文件中使用XML填充表。

这是一个php.file示例(需要转换为PDO)           要求( “dbinfo.php”);

// Get parameters from URL
$code_client=$_GET["code_client"];
// Start XML file, create parent node
$dom = new DOMDocument("1.0");
$node = $dom->createElement("markers");
$parnode = $dom->appendChild($node);

// Opens a connection to a mySQL server
$connection=mysql_connect ($host, $username, $password);
if (!$connection) {
  die("Not connected : " . mysql_error());
}

// Set the active mySQL database
$db_selected = mysql_select_db($database, $connection);
if (!$db_selected) {
die ("Can\'t use db : " . mysql_error());
 }

// Search the rows in the markers table
$sql="SELECT * FROM `client` INNER JOIN `adresse_client` ON `client`.`code_client` = `adresse_client`.`code_client` WHERE `client`.`code_client`='".$code_client."'";
    if (mysql_errno() <> 0) 
    {
        echo mysql_error(),'<br>',$sql,'<br>';
        die();
    } 
    $result=mysql_query($sql);
    while($donnees=mysql_fetch_assoc($result))
}
header("Content-type: text/xml");

    // Iterate through the rows, adding XML nodes for each
            while ($row = @mysql_fetch_assoc($result)){
            $node = $dom->createElement("client");
            $newnode = $parnode->appendChild($node);
            $newnode->setAttribute("'code_client'", $row['code_client']);
            //$newnode->setAttribute("xxx", $row['xx']); list all other

    }
}


echo $dom->saveXML();
?>