Php 在输入字段下显示ajax信息
我试图开发一个ajax来显示一些信息。 我的ajax工作正常,但它不显示输入字段下的信息。 你有办法解决这个问题吗 多谢各位Php 在输入字段下显示ajax信息,php,ajax,Php,Ajax,我试图开发一个ajax来显示一些信息。 我的ajax工作正常,但它不显示输入字段下的信息。 你有办法解决这个问题吗 多谢各位 $content .= HTML::inputField('suppliers_id', $suppliers_id . ' ' . $suppliers_name, 'id="ajax_suppliers_id" list="supplier_list" class="form-control"',
$content .= HTML::inputField('suppliers_id', $suppliers_id . ' ' . $suppliers_name, 'id="ajax_suppliers_id" list="supplier_list" class="form-control"', null, null, null);
$content .= '<datalist id="supplier_list"></datalist>';
$suppliers_ajax = this->link('ajax/suppliers.php');
<script>
window.addEventListener("load", function(){
// Add a keyup event listener to our input element
document.getElementById('ajax_suppliers_id').addEventListener("keyup", function(event){hinter(event)});
// create one global XHR object
// so we can abort old requests when a new one is make
window.hinterXHR = new XMLHttpRequest();
});
// Autocomplete for form
function hinter(event) {
var input = event.target;
var ajax_suppliers_id = document.getElementById('ajax_suppliers_id');
// minimum number of characters before we start to generate suggestions
var min_characters = 0;
if (!isNaN(input.value) || input.value.length < min_characters ) {
return;
} else {
window.hinterXHR.abort();
window.hinterXHR.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var response = JSON.parse( this.responseText );
ajax_suppliers_id.innerHTML = "";
response.forEach(function(item) {
// Create a new <option> element.
var option = document.createElement('option');
option.value = item;
ajax_suppliers_id.appendChild(option);
});
}
};
window.hinterXHR.open("GET", "{$suppliers_ajax}?q=" + input.value, true);
window.hinterXHR.send()
}
}
</script>
我可以在sa关键字上看到的响应示例:
[{"id":"3","name":"Samsug"}]
您正在将新选项附加到输入中,但需要将其附加到
数据列表中。此外,option.value=item.name
将为您提供结果has[Object Object]
,这就是为什么您需要指定字段,即:id,name
,以访问相同的元素。i、 e:项目名称
演示代码:
var ajax_suppliers_id=document.getElementById('supplier_list')//数据列表id
var响应=[{
“id”:“3”,
“名称”:“Samsug”
},{
“id”:“3”,
“名称”:“Samsug1”
},{
“id”:“3”,
“名称”:“Samsug2”
}];
ajax_suppliers_id.innerHTML=“”;
响应。forEach(功能(项目){
//创建一个新元素。
var option=document.createElement('option');
option.value=item.name;//获取名称
ajax\u suppliers\u id.appendChild(选项);
});代码>
能否显示响应的输出
?这是使用浏览器调试工具的好时机。控制台中有任何错误吗?AJAX请求的响应是否与您预期的一致?运行时响应
变量的值是多少?forEach()?在该迭代中,项
的值是多少?具体发生了什么?我更新了。见上文。tkOk tk用于解决方案,但我还需要在隐藏字段中传递供应商id以保存供应商名称。目前只有供应商名称。该隐藏字段在哪里?你能详细说明一下吗?
[{"id":"3","name":"Samsug"}]