質問編集履歴

1

コードの追加

2019/03/18 07:46

投稿

wizard
wizard

スコア25

test CHANGED
File without changes
test CHANGED
@@ -119,3 +119,143 @@
119
119
  ```
120
120
 
121
121
  上記のコードを関数を定義づけしdoneやfail毎にまとめたいです。
122
+
123
+
124
+
125
+ ```修正中のjs
126
+
127
+ コード
128
+
129
+ $(function () {
130
+
131
+ var preSearchword = ''; //空の文字列を入れてあります
132
+
133
+ var pageNum = 1; //変数に1を代入
134
+
135
+ $('.search__btn').on('click', function () { //検索ボタンがクリックされた時
136
+
137
+ test();
138
+
139
+ });
140
+
141
+ $('.search__btn').on('click', function () { //検索ボタンがクリックされた時
142
+
143
+ done();
144
+
145
+ });
146
+
147
+ $('.search__btn').on('click', function () { //検索ボタンがクリックされた時
148
+
149
+ fail();
150
+
151
+ });
152
+
153
+ function test() {
154
+
155
+ var searchword = $('.search__text__input').val(); //変数にバリューを取得した値を代入 文字を入力する部分
156
+
157
+ if (preSearchword === searchword) { //if文でpreSearchwordとsearchwordが厳密に等しい場合の式を作り
158
+
159
+ //console.log(pageNum)
160
+
161
+ pageNum++; //1回目の検索結果と2回目クリックされる時の検索結果が同じ場合、1ページずつプラスしていきます
162
+
163
+ } else { //そうでない場合
164
+
165
+ pageNum = 1; //ページ数を1に戻します 最初のクリックの際は、falseを返します
166
+
167
+ $('ul').empty(); //同時に下に表示していたulの子要素をempty()で消します
168
+
169
+ }
170
+
171
+ preSearchword = searchword; //preSearchwordにsearchwordを入れます
172
+
173
+ // console.log(searchword);
174
+
175
+ // console.log(searchword);
176
+
177
+ }
178
+
179
+ $.ajax({
180
+
181
+ url: 'https://app.rakuten.co.jp/services/api/BooksTotal/Search/20130522',
182
+
183
+ type: 'GET',
184
+
185
+ datatype: 'json',
186
+
187
+ data: {
188
+
189
+ keyword: searchword, //バリューを取得した変数を、dataのオブジェクトの中のvalueに入れます
190
+
191
+
192
+
193
+ booksGenreId: '001',
194
+
195
+ hits: 20, //検索でヒットした件数を指定
196
+
197
+ page: pageNum //ページ数
198
+
199
+ },
200
+
201
+ }).done(done).fail(fail);
202
+
203
+ if (data.hits === 0) { //if文で、ヒット件数が0と厳密に等しい場合
204
+
205
+ $('ul.lists').prepend('<p class="message">検索結果が見つかりませんでした<br>別のキーワードで検索してください</p>'); //listというクラスを持つulの中に、prependでクラスを入れ、pタグを表示させます
206
+
207
+ }
208
+
209
+ function done(data) {
210
+
211
+ console.log(data);
212
+
213
+ //検索結果が0件の場合
214
+
215
+
216
+
217
+ //通信が成功した時
218
+
219
+ var booklist = ''; //変数に空の文字列を代入
220
+
221
+ $.each(data.Items,function(index,item){ //$.eachで繰り返し処理を行い、 itemは、現在のアクセスのDOM(htmlなどを自由に操作する仕組み)を意味しています。
222
+
223
+ // console.log(item);
224
+
225
+ booklist += '<li class="lists__item">' + index + '<div class="lists__item__inner">' + '<a href="' + // booklistという変数に必要なクラスを加算代入しつつ、全ての要素に対して固有パラメータを入れます
226
+
227
+ item.Item.itemUrl + '"class="lists__item__link" target="_blank">' + '<img src="' + item.Item
228
+
229
+ .largeImageUrl + '" class="lists__item__img" alt="' + item.Item.title + '">' +
230
+
231
+ '<p class="lists__item__detail">作品名: ' + item.Item.title + '</p>' + //itemは、関数の第二引数,Itemは、楽天の個別商品のバリュー,三つ目は、固有パラメーター
232
+
233
+ '<p class="lists__item__detail">作者 : ' + item.Item.author + '</p>' +
234
+
235
+ '<p class="lists__item__detail">出版社: ' + item.Item.publisherName + '</p>' + '</a>' +
236
+
237
+ '</div>' + '</li>';
238
+
239
+ })
240
+
241
+ $('ul.lists').prepend(booklist); //listというクラスを持つulの中にprepend(変数)とし、入れます
242
+
243
+ }
244
+
245
+ // 通信が失敗した時
246
+
247
+ function fail(data) {
248
+
249
+ $('.lists').after('<div class="error"></div>') //errorという新たなクラスをlistsの後ろ(中)に挿入します
250
+
251
+ error = $('.error'); //変数にクラスを代入
252
+
253
+ error.html('<p class="message">データ通信できませんでした<br>接続を確認してください</p>'); //変数に対して、htmlで書き換えて、文字を入力しないで検索をかけた場合と通信がうまくいかなかった時にエラー文を表示させます
254
+
255
+ }
256
+
257
+ });
258
+
259
+ </script>
260
+
261
+ ```