2017-08-10 28 views
2

JSON數據不是在jQuery的陣列添加JSON數據

$(function() { 
    $(document).ready(function() { 
    $.get("automcomplete.php", function(data, status) { 
     console.log(data); 
     // echo json_encode($result['name']); 
     // response 
     // "Afghanistan""Africa""Albania""Algeria" 

     var availableTags = [data]; 
     // i want todo this 
     // var availableTags = [ 
     // "america", 
     // "london" 
     // ]; 
     $("#tags").autocomplete({ 
     source: availableTags 
     }); 
    }); 
    }); 
}); 
<div class="ui-widget"> 
    <label for="tags">Tags: </label> 
    <input id="tags"> 
</div> 

動態創建的自動完成列表,並顯示在列表中的問題是我怎麼可以把JSON數據jQuery的陣列

+0

我想知道爲什麼你有'$(function(){})'和'$(document).ready()';他們是一樣的。並直接將數據分配給availableTags – Rahul

+0

還要添加'dataType'參數或使用'$ .getJSON'確保'data'被解析 – charlietfl

+0

顯示php。看起來你可能在一個循環中有多個'echo'並且需要創建一個數組並且只需要回顯一次 – charlietfl

回答

1

您的PHP代碼表明您傳回JSON,所以你可以刪除var availableTags = [data];並給予data直接向source屬性:

$(function() { 
    $.get("automcomplete.php", function(data) { 
    $("#tags").autocomplete({ 
     source: data 
    }); 
    }); 
}); 

如果您的數據作爲字符串返回,您可以手動將其解析到使用JSON.parse()對象:

$.get("automcomplete.php", function(data) { 
    var sourceData = JSON.parse(data); 
    $("#tags").autocomplete({ 
    source: sourceData 
    }); 
}); 

注意不要需要兩個的document.ready處理程序。一個$(function() {});已經足夠

+0

如果我搜索美國其顯示所有迴應 – UNknow

+0

這就是你的服務器返回的結果。假設你需要修改AJAX以便發送搜索詞,然後你的'automcomplete.php'應該執行搜索邏輯。 –

+0

我的repsonse是「阿富汗」「非洲」「阿爾巴尼亞」「阿爾及利亞」,我需要像這樣的反應「阿富汗」,「非洲」,「阿爾巴尼亞」,「阿爾及利亞」,但我怎麼在每個國家後添加逗號我認爲多數民衆贊成爲什麼它並不完美 – UNknow