2015-06-03 53 views
1

有一段時間沒有碰到Javascript,也找不到從JSON對象中提取數據的正確方法。 所以我基本上發送一個簡單的GET請求到Giphy API並嘗試從響應中獲取URL,但由於某種原因我得到了各種錯誤。 這是我的嘗試:從GET響應/ JSON對象中提取數據

$(function() { 
 
     $('#searchButton').click(function() { 
 
     console.log("test"); 
 
     $("#result").append("test<br />"); 
 
     var xhr = $.get("http://api.giphy.com/v1/gifs/search?q=cats&api_key=dc6zaTOxFJmzC&limit=1"); 
 
     xhr.done(function(data) { 
 
      console.log(this.fixed_height); 
 
      $("#result").append("success got data<br />" + data + "<br />"); 
 
      console.log("success got data", data); 
 
      $.each(data.results, function() { 
 
      $.each(this.images, function() { 
 
       console.log(this.fixed_height); 
 
       $("#result").append(this.fixed_height + "<br />"); 
 
      }); 
 
      }) 
 
     }); 
 
     }); 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<button id="searchButton">search!</button> 
 

 
<div id="result"></div>

+0

你會得到什麼錯誤? – showdev

+0

Uncaught TypeError:無法讀取未定義的屬性「長度」 –

回答

1

你有一對夫婦的問題。首先,data對象中沒有results成員。我在數據對象中看到的唯一可以迭代的是另一個data成員。其次,在images裏面,沒有fixed_height,只是height。這工作:

var xhr = $.get("http://api.giphy.com/v1/gifs/search?q=cats&api_key=dc6zaTOxFJmzC&limit=1"); 
xhr.done(function (data) { 
    $.each(data.data, function() { 
     $.each(this.images, function() { 
      console.log(this.height); 
     }); 
    }) 
}); 

http://jsfiddle.net/n9ffva83/

記住不需要在的jsfiddle $(function() {});,所以你必須提供(只是在你的代碼的方式做你給我們上圖)。

編輯: 只得到固定高度的URL試試這個:

var xhr = $.get("http://api.giphy.com/v1/gifs/search?q=cats&api_key=dc6zaTOxFJmzC&limit=1"); 
xhr.done(function (data) { 
    $.each(data.data, function() { 
     console.log(this.images.fixed_height.url); 
    }) 
}); 

看來這個網址只有一個,屬於圖像。

http://jsfiddle.net/n9ffva83/1/

+0

好的,所以如果我只想提取固定高度的url部分。不應該這樣工作:$(function(){('#searchButton')。click(function(){console.log(「test」); var xhr = $ .get(「http:// api.giphy.com/v1/gifs/search?q=cats&api_key=dc6zaTOxFJmzC&limit=5「); xhr.done(函數(數據){0} {0} {.each(data.data,function(){ $ .each this.images,函數(){$ 。每個(this.fixed_height,函數(){ 的console.log(this.url); }); });} ) }); }); }); –

+0

對不起,代碼亂,不知道如何格式化:/ –

+0

無法在評論中格式化。我其實只是看到了你正在談論的成員。我會相應地更新答案。 –