我一直在看这里的问题,找不到我想要的确切答案:(但是我设法得到了一些东西。
我有一个从数据库查询中填充的表单选择字段
<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;
感谢任何帮助
路加
确定我使用的解决方案,对于任何想知道我如何解决的人
我的index.php,其中包含javascript和表单代码
JavaScript代码
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js" type="text/javascript"></script> <script> function showUser(str) { if (str=="") { document.getElementById("company_name").value=""; 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").value = data[i].name; document.getElementById("company_email").value = data[i].web; } } } xmlhttp.open("GET","formdata.php?q="+str,true); xmlhttp.send(); } </script>
和表单代码
<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> <input id="company_name" type="text" name="company_name" value="" /> <input id="company_email" type="text" name="company_name" value="" />
然后我的formdata.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['businessID']; $cName = $row['businessName']; $cWeb = $row['businessWebsite']; $info[] = array( 'id' => $cID, 'name' => $cName, 'web' => $cWeb ); } echo json_encode($info);?>
就是这样,感谢charlietfl的帮助!
希望这可以帮助某人:)