Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在输入字段下显示ajax信息_Php_Ajax - Fatal编程技术网

Php 在输入字段下显示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"',

我试图开发一个ajax来显示一些信息。 我的ajax工作正常,但它不显示输入字段下的信息。 你有办法解决这个问题吗

多谢各位

     $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"}]