【发布时间】:2021-07-16 19:05:06
【问题描述】:
当从下拉列表中选择选项时,我正在尝试从 mysqli 数据库填充表单。我正在尝试通过对 PHP 页面的 ajax 'get' 调用来做到这一点。 PHP 页面执行 SQL 查询并返回结果,然后我对数据进行 json_encode。这会将 JSON 放入一个数组中。然后 ajax 函数尝试解析 JSON。然而,这就是问题所在。 JSON 数据以数组形式出现,而 JSON.parse(xhr.response) 无法解析。
[{"id":"12","accountnum":"2148","name":"Blah","address":"123 Dan Hwy","city":"ANY Town","state":"IA","zip":"11111","phonenumber":"555-555-5555","brand":"Dan","create_date":"2021-06-14 15:47:36"}]
/////////////////////////////////////// ///
<script>
const selectElement = document.querySelector('.accountnum');
selectElement.addEventListener('change', (event) =>{
const result = document.querySelector('.result');
var eventResponse = `${event.target.value}`;
result.textContent = 'the account num is ' +eventResponse;
loadAccounts(eventResponse);
});
</script>
/////////////////////////////////
function loadAccounts(eventResponse){
var xhr = new XMLHttpRequest();
var url = "users.php";
var geturl = xhr.open('GET', url+"?accountnum="+eventResponse, true);
xhr.onreadystatechange = function(){
if(xhr.readyState === XMLHttpRequest.DONE) {
if(this.status == 200){
console.log(xhr.response);
var accounts = JSON.parse(xhr.response);
console.log(accounts.id);
console.log(accounts.name);
var output = '';
for(var i in accounts){
output += '<div class="form-group">' +
'<label for="accountname">AccountNum*</label>' +
'<input type="text" class="form-control" id="accountnum" name="accountnum" value= '+accounts[i].accountnum+ '>' +
'</div>'
}
document.getElementById('accounts').innerHTML = output;
}
}
}
xhr.send()
}
</script>
/////////////////////////////////////// /
<?php
$accountnum = $_GET['accountnum'];
$query = "SELECT * FROM accounts WHERE accountnum = $accountnum";
$result = mysqli_query($conn, $query);
$accounts = mysqli_fetch_all($result, MYSQLI_ASSOC);
echo json_encode($accounts);
?>
【问题讨论】:
-
明白了。是的,这只是一个快速而肮脏的例子。在我们上线之前我会清理它。