jquery自动完成,PHP和JSON无法正常工作

时间:2012-03-30 16:46:46

标签: php jquery json

我一定错过了什么。我有一个简单的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,没有错误。

4 个答案:

答案 0 :(得分:1)

我认为主要问题是您使用的示例是期望正常数组。

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

在你的PHP脚本中试试这个例子:

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

编辑: 如果你需要一个多维数组,你必须定义一个id =&gt;价值对。

$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 );
                }
            } );
        }
    } );
} );

答案 1 :(得分:0)

也许这是你的JSON无效。我不确定你必须把“char作为参数的名字:

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

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

答案 2 :(得分:0)

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

这很好用:echo'[{“id”:1,“value”:“Generate Ideas”},{“id”:2,“value”:“Define Products”}]';

我想知道有多少人知道这种奇怪之处。这是jquery中的错误吗?

答案 3 :(得分:0)

事实证明,我的网页中存在一个碰撞的.js引用,导致了这个问题。对不起大家。