【发布时间】:2013-11-13 15:31:36
【问题描述】:
我一直在查看这里的问题,无法找到我所追求的确切答案:(但我设法得到了一些东西。
我有一个从数据库查询中填充的表单选择字段
<select style="width:100%;" class="quform-tooltip chosen-select" id="company_select" name="company_select" title="Company Select" onChange="showUser(this.value)">
<option value="">Please select</option>
<?php
$userID = $user->getUserID();
$query = $user->database->query("SELECT * FROM tbl_businesses as business LEFT JOIN tbl_user_businesses as biz_user ON business.businessID = biz_user.businessID WHERE biz_user.userID ='$userID'");
while($row=$user->database->fetchArray($query))
{
$bizID = $row['businessID'];
$bizName = $row['businessName'];
echo "<option value='$bizID'>$bizName</option>";
}?>
</select>
然后,当更改/选择上述选择框值时,我想填充其他 2 个文本框(最终可能会增加)
<input id="company_name" type="text" name="company_name" value="" />
<input id="company_email" type="text" name="company_email" value="" />
所以我的选择框上有一个 onchange 函数
<script>
function showUser(str)
{
if (str=="")
{
document.getElementById("company_name").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
var data = JSON.parse(xmlhttp.responseText);
for(var i=0;i<data.length;i++)
{
document.getElementById("company_name").innerHTML += data[i].id + ' - ' + data[i].name + ' - ' + data[i].web;
}
}
}
xmlhttp.open("GET","formdata.php?q="+str,true);
xmlhttp.send();
}
</script>
而我的formdata.php文件就是这样
<?php
include("include/user.php");
$q = intval($_GET['q']);
$sql="SELECT * FROM tbl_businesses WHERE businessID = '".$q."'";
$result = $user->database->query($sql);
$info = array();
while($row=$user->database->fetchArray($result))
{
$cID = $row['bussinessID'];
$cName = $row['businessName'];
$cWeb = $row['businessWebsite'];
$info[] = array( 'id' => $cID, 'name' => $cName, 'web' => $cWeb );
}
echo json_encode($info);?>
正确调用 ajax 并返回预期的数据,但我现在需要帮助来填充文本框值?
任何人都可以帮我解决这个问题,我花了很长时间试图弄清楚,我不熟悉 javascript/json 所以不知道从哪里开始
我希望将 company_name 文本框的值设置为 $cName;和 company_email 文本框值设置为 $cWeb;
感谢任何帮助
卢克
【问题讨论】:
-
从浏览器控制台中找到的请求中复制响应并查看它是否在 jsonlint.com 中验证...可能有一些来自 php 的意外输出
-
嗨,是的,响应验证正常,响应的示例是
code[{"id":"5","name":"My Company 5","web":"www .samplewebsite.com"}]code谢谢 -
如果
textboxes是表单输入,或者textarea需要设置值,而不是innerHTML -
嗨 charlietfl 是的,对不起,意味着表单输入 :) 谢谢你将 innerHTML 更改为 value 工作了 :) 谢谢
标签: javascript ajax database json