请帮我解决此案。 我的代码如下:
<script>
function getXMLHTTP() {
var xmlhttp = false;
try{
xmlhttp=new XMLHttpRequest();
}
catch(e)
{
try{
xmlhttp= new ActiveXObject("Microsoft.XMLHTTP");
catch(e){
try{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
catch(e1){
xmlhttp=false;
}
}
}
return xmlhttp;
}
function getCity(url, id1) {
var req = getXMLHTTP(url);
if (req) {
req.onreadystatechange = function() {
if (req.readyState == 4) {
// only if "OK"
if (req.status == 200) {
document.getElementById(id1).value=req.responseText;
// document.getElementById(id2).value=req.responseText;
} else {
alert("There was a problem while using XMLHTTP:\n" + req.statusText);
}
}
}
req.open("GET", url, true);
req.send(null);
}
}
</script>
<?php
echo "
<tbody>
<tr>
<td class='td'><input type='text' size='6' name='kode_barang" ."' maxlength='6' onchange='javascript:this.value=this.value.toUpperCase();' onkeyup='getCity(\"search.php?kode_barang=\"+this.value, \"nama_barang" . "\",\"harga_barang" . "\");' id='kode_barang'></td>
<td class='td'><input type='text' size='22' name='nama_barang" . "' id='nama_barang" . "' readonly tabindex='1'></td>
<td class='td'><input type='text' size='22' name='harga_barang" . "' id='harga_barang" . "' tabindex='1'></td>
</tbody>
";
?>
search.php文件:
include_once('config.php');
if (isset($_GET['kode_barang']))
{
$qry = "SELECT nama_barang, harga_barang FROM t_barang WHERE kode_barang = '" . $_GET['kode_barang'] . "'";
$sql = mysql_query($qry);
$ary = mysql_fetch_array($sql);
echo $ary['nama_barang'];
echo $ary['harga_barang'];
}
这是关于如何根据kode_barang输入找到nama_barang和harga_barang。 例如,如果我在文本框kode_barang中输入kode_barang然后在text_box中输入nama_barang,harga_barang将自动从数据库中设置信息。
我已尝试过此代码,但它在1个文本框nama_barang中设置了2个信息(nama_barang&amp; harga_barang)。应该在每个文本框中设置。
所以,我的问题是: 如何将数据库中的信息nama_barang和harga_barang设置到每个文本框?
欣赏你的帮助。 谢谢。
答案 0 :(得分:0)
从以下地址更改php文件:
echo $ary['nama_barang'];
echo $ary['harga_barang'];
到
echo json_encode($ary);
并从
更改您的JS函数document.getElementById(id1).value=req.responseText;
document.getElementById(id2).value=req.responseText;
到
var response = JSON.parse(responseText);
document.getElementById(id1).value=response.nama_barang;
document.getElementById(id2).value=response.harga_barang;
答案 1 :(得分:0)
用以下
替换你的getCity()函数 function getCity(url, id1, id2) {
var req = getXMLHTTP(url);
if (req) {
req.onreadystatechange = function() {
if (req.readyState == 4) {
// only if "OK"
if (req.status == 200) {
var res = JSON.parse(req.responseText);
document.getElementById(id1).value=res.nama_barang;
document.getElementById(id2).value=res.harga_barang;
} else {
alert("There was a problem while using XMLHTTP:\n" + req.statusText);
}
}
}
req.open("GET", url, true);
req.send(null);
}
}
并替换search.php中的部分代码
来自
$ary = mysql_fetch_array($sql);
echo $ary['nama_barang'];
echo $ary['harga_barang'];
到
$ary = mysql_fetch_array($sql);
echo json_encode($ary);
问题是,您缺少第二个文本框的ID getCity()函数。
替换以下部分
if (isset($_GET['kode_barang']))
{
$qry = "SELECT nama_barang, harga_barang FROM t_barang WHERE kode_barang = '" . $_GET['kode_barang'] . "'";
$sql = mysql_query($qry);
$ary = mysql_fetch_array($sql);
echo $ary['nama_barang'];
echo $ary['harga_barang'];
}
与
if (isset($_GET['kode_barang']))
{
$qry = "SELECT nama_barang, harga_barang FROM t_barang WHERE kode_barang = '" . $_GET['kode_barang'] . "'";
$sql = mysql_query($qry);
if (mysql_num_rows($sql) > 0)
{
$ary = mysql_fetch_array($sql);
echo json_encode($ary);
}
else
{
echo json_encode(array("nama_barang" => "", "harga_barang" => ""));
}
}
* 这不是最佳做法,因为它为每个keyup事件发出数据库请求。但可以帮助你解决。