2

xmlhttp.responseText次のようなを返すFLickrAPIを呼び出します。

jsonFlickrApi({"photos":{"page":1, "pages":200, "perpage":100, "total":"19934",
 "photo":[{"id":"7315581986", "owner":"62691288@N00", "secret":"504915125a", 
"server":"7090", "farm":8, "title":"China, Tiananmen Square", "ispublic":1,
 "isfriend":0, "isfamily":0}, {"id":"7308693706",
...

私はそれを次のように解析しようとします:

var jsonResponse = xmlhttp.responseText ;
jsonResponse = eval("("+jsonResponse + ")");
var output += jsonResponse.photos.photo[1].id ;
alert(output);

Firebugは私に言います:jsonFlickrApi is not defined

  • なぜこのエラーメッセージが表示されるのですか?

  • そもそもなぜ「eval」を使わなければならないのですか?

4

1 に答える 1

4

JSON応答ではなく、リクエストに対するJSONP応答を取得しているようです。JSONPはJSONオブジェクトであり、関数呼び出しでラップされています。したがって、関数jsonFlickrApiを定義するだけで、応答が利用可能になったときに呼び出されます。

function jsonFlickrApi (response) {
  console.log(
     "Got response from Flickr-API with the following photos: %o", 
     response.photos
  );
  // Handle the response here. I.E update the DOM, trigger event handlers etc.
}

// Later in your XMLHttpRequest code:
var jsonResponse = xmlhttp.responseText ;
// This will call the jsonFlickrApi-function.
eval("("+jsonResponse + ")");
于 2012-06-07T20:51:45.053 に答える