繁体   English   中英

jQuery自动完成与PHP和JSON不起作用

[英]jquery autocomplete with PHP and JSON not working

我肯定错过了什么。 我有一个简单的jQuery自动完成功能:

$("input#txtApplicationName").autocomplete({
            source: "ApplicationProcess.php",
            minLength: 2,
            select: function (event, ui) {
                alert(ui.item.id);
                alert(ui.item.name);
                //$('#state_id').val(ui.item.id);
                //$('#abbrev').val(ui.item.abbrev);
            }
        });

这是ApplicationProcess.php的全部内容:

<?
echo '[{"id":1,"name":"Generate Ideas"},{"id":2,"name":"Define Products"}]';
?>

当我在自动完成字段(txtApplicationName)中键入文本时,我什么也没得到。 框下方没有任何提示。

只要您知道我的js和html很好,就可以用上面的jquery代替:

$("input#txtApplicationName").autocomplete({
    source: ["c++", "java", "php", "coldfusion", "javascript", "asp", "ruby"]
});

...工作正常。

我究竟做错了什么? 我的php中的JSON格式有误吗? 如果我直接从浏览器中击中该php文件,它会按预期吐出JSON,没有错误。

我认为主要问题是您所使用的示例期望使用普通数组。

您已创建一个多维数组作为响应。

尝试例如在您的php脚本中这样做:

$values = array( 'Generate Ideas', 'Define Products' );
echo json_encode( $values );

编辑:如果需要一个多维数组,则必须定义一个id =>值对。

$values = array(
    array( 'id' => 0, 'label' => 'Generate Ideas' ),
    array( 'id'=> 1, 'label' => 'Define Products' ),
);
echo json_encode( $values );

并适合JavaScript代码:

jQuery().ready( function () {
    jQuery( '#txtApplicationName' ).autocomplete( {
        minLength:2,
        source:function ( request, response ) {
            jQuery.ajax( {
                url:'ApplicationProcess.php',
                dataType:"json",
                success:function ( data ) {
                    response( data );
                }
            } );
        }
    } );
} );

问题原来是JSON中的“名称”。 当我将“名称”更改为其他任何单词时,一切正常。

正常工作:echo'[{{id“:1,” value“:” Generate Ideas“},{” id“:2,” value“:” Define Products“}]'';

我想知道有多少人意识到这种怪异。 这是jquery中的错误吗?

原来,我的网页中存在一个冲突的.js参考,导致了此问题。 不好意思

可能是您的JSON无效。 我不确定您是否必须在参数名称中输入“ char”:

[{id:1,name:"Generate Ideas"},{id:2,name:"Define Products"}]

我的意思是,我真的认为这是没有必要的。 编辑:是的,您不必删除它们

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM