質問するログイン新規登録

質問編集履歴

1

コードの追加

2019/03/18 07:46

投稿

wizard
wizard

スコア25

title CHANGED
File without changes
body CHANGED
@@ -58,4 +58,74 @@
58
58
  });
59
59
 
60
60
  ```
61
- 上記のコードを関数を定義づけしdoneやfail毎にまとめたいです。
61
+ 上記のコードを関数を定義づけしdoneやfail毎にまとめたいです。
62
+
63
+ ```修正中のjs
64
+ コード
65
+ $(function () {
66
+ var preSearchword = ''; //空の文字列を入れてあります
67
+ var pageNum = 1; //変数に1を代入
68
+ $('.search__btn').on('click', function () { //検索ボタンがクリックされた時
69
+ test();
70
+ });
71
+ $('.search__btn').on('click', function () { //検索ボタンがクリックされた時
72
+ done();
73
+ });
74
+ $('.search__btn').on('click', function () { //検索ボタンがクリックされた時
75
+ fail();
76
+ });
77
+ function test() {
78
+ var searchword = $('.search__text__input').val(); //変数にバリューを取得した値を代入 文字を入力する部分
79
+ if (preSearchword === searchword) { //if文でpreSearchwordとsearchwordが厳密に等しい場合の式を作り
80
+ //console.log(pageNum)
81
+ pageNum++; //1回目の検索結果と2回目クリックされる時の検索結果が同じ場合、1ページずつプラスしていきます
82
+ } else { //そうでない場合
83
+ pageNum = 1; //ページ数を1に戻します 最初のクリックの際は、falseを返します
84
+ $('ul').empty(); //同時に下に表示していたulの子要素をempty()で消します
85
+ }
86
+ preSearchword = searchword; //preSearchwordにsearchwordを入れます
87
+ // console.log(searchword);
88
+ // console.log(searchword);
89
+ }
90
+ $.ajax({
91
+ url: 'https://app.rakuten.co.jp/services/api/BooksTotal/Search/20130522',
92
+ type: 'GET',
93
+ datatype: 'json',
94
+ data: {
95
+ keyword: searchword, //バリューを取得した変数を、dataのオブジェクトの中のvalueに入れます
96
+
97
+ booksGenreId: '001',
98
+ hits: 20, //検索でヒットした件数を指定
99
+ page: pageNum //ページ数
100
+ },
101
+ }).done(done).fail(fail);
102
+ if (data.hits === 0) { //if文で、ヒット件数が0と厳密に等しい場合
103
+ $('ul.lists').prepend('<p class="message">検索結果が見つかりませんでした<br>別のキーワードで検索してください</p>'); //listというクラスを持つulの中に、prependでクラスを入れ、pタグを表示させます
104
+ }
105
+ function done(data) {
106
+ console.log(data);
107
+ //検索結果が0件の場合
108
+
109
+ //通信が成功した時
110
+ var booklist = ''; //変数に空の文字列を代入
111
+ $.each(data.Items,function(index,item){ //$.eachで繰り返し処理を行い、 itemは、現在のアクセスのDOM(htmlなどを自由に操作する仕組み)を意味しています。
112
+ // console.log(item);
113
+ booklist += '<li class="lists__item">' + index + '<div class="lists__item__inner">' + '<a href="' + // booklistという変数に必要なクラスを加算代入しつつ、全ての要素に対して固有パラメータを入れます
114
+ item.Item.itemUrl + '"class="lists__item__link" target="_blank">' + '<img src="' + item.Item
115
+ .largeImageUrl + '" class="lists__item__img" alt="' + item.Item.title + '">' +
116
+ '<p class="lists__item__detail">作品名: ' + item.Item.title + '</p>' + //itemは、関数の第二引数,Itemは、楽天の個別商品のバリュー,三つ目は、固有パラメーター
117
+ '<p class="lists__item__detail">作者 : ' + item.Item.author + '</p>' +
118
+ '<p class="lists__item__detail">出版社: ' + item.Item.publisherName + '</p>' + '</a>' +
119
+ '</div>' + '</li>';
120
+ })
121
+ $('ul.lists').prepend(booklist); //listというクラスを持つulの中にprepend(変数)とし、入れます
122
+ }
123
+ // 通信が失敗した時
124
+ function fail(data) {
125
+ $('.lists').after('<div class="error"></div>') //errorという新たなクラスをlistsの後ろ(中)に挿入します
126
+ error = $('.error'); //変数にクラスを代入
127
+ error.html('<p class="message">データ通信できませんでした<br>接続を確認してください</p>'); //変数に対して、htmlで書き換えて、文字を入力しないで検索をかけた場合と通信がうまくいかなかった時にエラー文を表示させます
128
+ }
129
+ });
130
+ </script>
131
+ ```