2012年12月22日土曜日

開発環境

『初めてのJavaScript 第2版』(シェリー・パワーズ著(Shelley Powers著)、武舎 広幸+武舎 るみ訳、オライリー・ジャパン、2009年、ISBN978-4-84312-225-5) の15章(Ajaxのデータ - XMLかJSONか)練習問第15-2を解いてみる。

その他参考書籍

15-2.

コード(BBEdit)

var xmlhttp = new XMLHttpRequest();
var url = "http://mkamimura.com/kamimura_blog/learning_javascript/sample1.txt";
xmlhttp.open('GET', url, true);
xmlhttp.onreadystatechange = print_recipe1;
xmlhttp.send(null);
function print_recipe1(){
  $('#pre0').append(xmlhttp.readyState + ", " + xmlhttp.status + "\n");
  if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
    var response = JSON.parse(xmlhttp.responseText);
    $('#pre0').append("成功!\n");
    var d0 = document.getElementById('d0');
    var recipe = document.createElement('div');
    var h3 = document.createElement('h3');
    var title = response['title'];
    title = document.createTextNode(title);
    h3.appendChild(title);
    recipe.appendChild(h3);
    var ul = document.createElement('ul');
    var ingredients = response['ingredients'];
    for(var i = 0; i < ingredients.length; i++){
      var li = document.createElement('li');
      var ingredient = ingredients[i]['ingredient'];
      ingredient = document.createTextNode(ingredient);
      li.appendChild(ingredient);
      ul.appendChild(li);
    }
    recipe.appendChild(ul);
    var p = document.createElement('p');
    var instruction = response['instruction'];
    instruction = document.createTextNode(instruction);
    p.appendChild(instruction);
    recipe.appendChild(p);
    d0.appendChild(recipe);
  } else {
    $('#pre0').append("通信中か失敗!\n");
  }
}
// jQuery版
var option = { 
  type:'GET', 
  dataType: 'json',
  url:url,
  success:print_recipe2,
  error:print_error,
  complete: print_end
};

function print_recipe2(data, text_status){
  $('#pre0').append("jQuery版: 成功!" + text_status + "\n");
  var recipe = $(document.createElement('div'));
  var h3 = $(document.createElement('h3'));
  h3.text(data['title']);
  recipe.append(h3);
  var ul = $(document.createElement('ul'));
  var ingredients = data['ingredients'];
  for(var i = 0; i < ingredients.length; i++){
    var li = $(document.createElement('li'));
    li.append(ingredients[i]['ingredient']);
    ul.append(li);
  }
  recipe.append(ul);
  var p = $(document.createElement('p'));
  p.append(data['instruction']);
  recipe.append(p);
  $('#d1').append(recipe);
}
function print_error(){
  $('#pre0').append("jQuery版: エラー\n");
}
function print_end(){
  $('#pre0').append("jQuery版: 終了\n");
}
$.ajax(option);



通常版

jQuery版

0 コメント:

コメントを投稿