2017-09-13 24 views
-1

我是JQuery的新手,我正在使用API​​來執行以下操作。將元素放置在JQuery中的單個div中

  1. 從如姓名,地點,天氣預報等
  2. 我有下面的代碼的引導結構的API得到多個值: -

    <div id="place_here" class="row"> 
    
    </div> 
    

    我希望放置數據我從這個DIV的API中獲得。

  3. 我唯一想做的事情就是把所有的數據放到一個div中,然後把div放到上面的div中去創建一個漂亮的表格。事情是這樣的: -

    var str = '<div class="col-md-4">' + newoverview + '</div>'; 
    

    (newoverview是JSON字符串,我得到不過,這只是我想在我的div class = "col-md-4"標籤放置上面我要插入多個值,以及單個值。

問題: - 。

  1. 我不能(或不知道)如何在JQuery中使用全局變量每當我在控制檯登錄一個變量的值是給我一個null 。我知道這是因爲JSON是異步的,但我不知道這方面的工作。

  2. 我嘗試使用多個函數並逐個傳遞值並添加div div。但是,這不是我想做的事情,並給出了一個混亂的結構。

如何收集我在JSON中獲得的所有必需值,並將它們合併到一個div中並將其放置在我的HTML結構中的div中。

編輯: - 代碼

$(document).ready(function(){ 
    $("#Search_Button").click(function() { 
     var name; 
     name = $("#value").val(); 
     if(!name){ 
     console.log("Enter a name"); 
     } 
     search(name); 
     }); 

    function search(name){ 
    var url = "url_here"; 
    $.getJSON(url,function(data){ 
     $.each(data.results,function(i,j){ 
      displayImage(j.path); 
      displayOverview(j.id); 
     }); 
    }); 
    } 



function displayOverview(id){ 
    var url = "url_here"; 
    $.getJSON(url,function(data){ 
     var overviewx = data.overview; 
     var newoverview=''; 
      for(var x=0;x<overviewx.length && x<100 ;x++){ 
      newoverview+=overviewx[x]; 
      } 
      var str = '<div class="col-md-4">' + newoverview + 
      '</div>'; 
      $("#place_here").append(str); 
    }); 

} 

function displayImage(id){ 
    var url = "url_here"; 
    var str = '<img src="' + url + '"</img>'; 
    $("#place_here").append(str); 
    console.log(str); 
} 


    }); 

我希望把兩者(也許更多)在一個單一的divdisplayOverviewdisplayImage標籤和地點div到我的主要HTML結構。

+3

你將不得不在這裏發表一些JavaScript ...你」不給我們太多的去 –

+0

你可以提供的JS代碼,以便我們可以看到那裏發生了什麼 – Gardezi

+0

嘿,夥計們!剛剛添加我的代碼。 –

回答

0

這只是一個例子!

防止異步處理,我們使用回調

function getItem(){ 
    var dfd = jQuery.Deferred(); 
    var url_to_json = 'json/test.json'; 

     $.getJSON(url_to_json, function(data) { 
      dfd.resolve(data); 
     }); 
    return $dfd.promise(); 
} 

當你需要一個響應你剛纔:

getItem.done(function(data){ 
console.log(data); 
}); 
+0

我可以在'$ .getJSON'之外聲明'var items = [];'並將其用作全局數組。 –

+0

要做到這一點,你需要使用$ .Deferred(),我更新我的答案 –

相關問題