JSON解析问题

Rah*_*ngh 9 javascript jquery json

我是一个在jQuery中使用JSON解析的完整菜鸟.以为我收到了回复......我的数据是这样的:

Array(
[1]=>abc,
[3]=>mango,
[4]=>apple,
[5]=>fruits
)
Run Code Online (Sandbox Code Playgroud)

通过这种方式,我希望此列表显示为自动完成列表.我在用.

    jQuery("#name").autocomplete( '<?php echo HTTP_PATH.'/songs/sss'; ?>', {
    multiple: true,
    mustMatch: true,        
    matchContains: true,
    autoFill: false,
    dataType: "json",
    parse: function(data) {
            return jQuery.map(data, function(item) {
                return { data: item, value: item.label, result: item.label};
            });
        },
        formatItem: function(item) {
            return item.label;
        },
        formatResult: function(item) {
            return item.id;
        },
        formatMatch: function(item) {
            return item.label;
        }

});
Run Code Online (Sandbox Code Playgroud)

我想要显示列表时的值,即我的数据中的标签.当我选择标签时,它应该显示标签.但在提交时,它实际上应该提交密钥.我的意思是我想让它作为HTML的选择框工作.

返回JSON

 [{"id":1,"label":"Mehdi Hassan"},{"id":2,"label":"Jagjit Singh"},{"id":3,"label":"Suresh Vadekar"}]
Run Code Online (Sandbox Code Playgroud)

IPr*_*ory 11

你的JSON似乎不是一个数组,只是一个对象(哈希映射).查看官方文档:

预期的数据格式

来自本地数据,网址或回调的数据可以有两种变体:

  • 字符串数组:["Choice1","Choice2"]

  • 具有标签和值属性的对象数组:[{label:"Choice1",value:"value1"},...]

在您的情况下,它应采用以下格式:

[
   {"1":"Shad.aab"},
   {"158":"Adadad"},
   {"159":"Asdadad"},
   {"166":"Abbas"},
   {"167":"Sdadad"},
   {"171":"Shadaab Please check it out"},
   {"173":"Check This Please"},
]
Run Code Online (Sandbox Code Playgroud)

(请记住,左侧是标签,右侧值,我想在您的数据中,所有都应该颠倒...)


lti*_*_sh 5

如果我对您的理解正确,则希望使用自动完成功能来填充名称文本字段,但希望利用与POST形式的名称关联的另一个值。

[如果您能够使用最新的jQueryUI版本的自动完成功能] -按照http://jqueryui.com/demos/autocomplete/#custom-data上的“自定义数据和显示”自动完成示例,您将在自动完成时看到该信息提示,它们将显示选定的标签,但是,它们还将关联的值保存在隐藏的输入中,该输入也将发布回服务器。给定您当前的json格式:

的HTML:

<label for="username">Name:</label>
<input id="username" size="50" />             <!-- holds display name -->
<input id="userid" name="userid" size="50" /> <!-- holds userid -->
...
Run Code Online (Sandbox Code Playgroud)

js:

<script>
  $("#username").autocomplete({
    source: '<?php echo HTTP_PATH.'/songs/sss'; ?>',

    // Update display name when user mouses over selection
    focus: function( event, ui ) {
      $( "#username" ).val( ui.item.label );
      return false;
    },

    // Set display name and hidden input on user selection
    select: function( event, ui ) {
      $( "#username" ).val( ui.item.label );
      $( "#userid" ).val( ui.item.id );
      return false;
    }
  }); 
</script>
Run Code Online (Sandbox Code Playgroud)

php POST目标:

<?php
  // Use [hidden] input to do your magic
  if(isset($_POST['userid']))
    echo 'Wooo..here is my key: ' . $_POST['userid'];
?>
Run Code Online (Sandbox Code Playgroud)