如何为Jquery UI自动完成格式化JSON?

时间:2014-08-13 05:10:14

标签: javascript json jquery-ui autocomplete

我正在尝试使用Jquery UI创建自动完成功能,但在不知道它为什么不起作用之前我遇到了问题。现在我已将问题过滤掉并将其转移到一个专注区域。

情况

1。)如果数据是本地数据,则自动完成。

2。)自动完成不起作用,因为JSON数据的格式不完全相同。

3.)不确定如何使JSON数据以与本地数据相同的格式进行回显。

在本地运行的Javascript:

<script type="text/javascript"> 
    $(function() {
  $( "#zip" ).autocomplete({
  source: [ {label:"705",value:"AIBONITO",state:"PR"},{label:"610",value:"ANASCO",state:"PR"},{label:"611",value:"ANGELES",state:"PR"},{label:"612",value:"ARECIBO",state:"PR"},{label:"601",value:"ADJUNTAS",state:"PR"}],
    minLength: 1,
    select: function( event, ui ) {
            event.preventDefault();
            $('#zip').val(ui.item.label);
            this.value = ui.item.label;
            $('#city').val(ui.item.value);
        $('#state').val(ui.item.state);
    }
  });
});

    </script> 

数据必须采用以下格式:

[ {label:"705",value:"AIBONITO",state:"PR"},{label:"610",value:"ANASCO",state:"PR"},{label:"611",value:"ANGELES",state:"PR"},{label:"612",value:"ARECIBO",state:"PR"},{label:"601",value:"ADJUNTAS",state:"PR"}]

远程Javascript:

<script type="text/javascript"> 
    $(function() {
  $( "#zip" ).autocomplete({
  source: 'autozip.php',
    minLength: 1,
    select: function( event, ui ) {
            event.preventDefault();
            $('#zip').val(ui.item.label);
            this.value = ui.item.label;
            $('#city').val(ui.item.value);
        $('#state').val(ui.item.state);
    }
  });
});

    </script> 

并且JSON将以这样的双引号进入,并且它不会起作用:

 [ {"label":"705","value":"AIBONITO","state":"PR"},{"label":"610","value":"ANASCO",state:"PR"},{"label":"7885","value":"WHARTON","state":"NJ"},{"label":"7981","value":"WHIPPANY","state":"NJ"},]

试图找出如何删除标签,值和状态周围的双引号。 谢谢你的时间!

1 个答案:

答案 0 :(得分:0)

<script type="text/javascript"> 
$(function() {
    $( "#zip" ).autocomplete({
        source: function (req, res) {
            $.get('autozip.php?q=' + req.term).then(function (data) {
                res(data);
            });
        },
        minLength: 1,
        select: function( event, ui ) {
            event.preventDefault();
            $('#zip').val(ui.item.label);
            this.value = ui.item.label;
            $('#city').val(ui.item.value);
            $('#state').val(ui.item.state);
        }
    });
});
</script>