質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

3回答

5093閲覧

JQueryでsuccessでできてdoneでできないコード

coinbura

総合スコア106

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2015/10/13 10:39

以下①のコードで複数のURLから日付のみを取得しようと試みています。
しかし、コード①はエラーをおこし、コード②は正常に日付を取得している現状です。

コード①

javascript

1for(i=0; i<3; i++){ 2 test= "http://example.com/"+i; 3 $.ajax({ 4 url: (test), 5 type: "get" 6 }).done(function(t){ 7 console.log(t.responseText); 8 day[i] = t.responseText.match(/\d日/); 9 console.log(day[i]); 10 }) 11}

コード②

javascript

1for(i=0; i<3; i++){ 2 test= "http://example.com/"+i; 3 $.ajax({ 4 url: (test), 5 type: "get", 6 success: function(t){ 7 day = t.responseText.match(/\d日/); 8 console.log(day); 9 } 10 }) 11}

ちなみに、①の「console.log(t.responseText);」は「undefined」になります。

なぜこのようになるのでしょうか?
分かる方おられましたら、ご教授のほどよろしくお願いいたしますm(__)m

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

こちらで試した限りは両方成功しませんね。
レスポンスはどういう形式でしょうか。JSON?ただの"n日"という2文字?
成功時のコールバック関数に渡される第1引数は dataType オプションで指定しないかぎりデフォルトで文字列だと思いましたが、 jqXHR オブジェクトを期待しているように見受けられます。

コールバック関数内でconsole.dir(arguments);を実行してみて、実際にコールバックに渡されている引数のリストを確認してみてはどうでしょうか。

投稿2015/10/27 03:01

tozjp

総合スコア790

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

coinbura

2015/10/29 06:56

なるほど。そんな方法があるんですね。 リスト、確認してみます♪
coinbura

2015/10/29 08:14

console.dir(arguments);で確認したところ、 ①は「0: Object」の「results[0]」に「example.com」の内容が。 ②は「0: Object」の「responseText」に「example.com」の内容が 入っていました。 なので、①の t.responseText.match を t.results[0].match に変更したところ、正常に動き、無事解決しました♪ ありがとうございます!
guest

0

利用されているjQueryのバージョンはいくつでしょうか。
done()に定義しているfunctionの引数の型に解決のヒントがありそうです。

投稿2015/10/26 04:32

takyafumin

総合スコア2335

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

coinbura

2015/10/26 15:29

1.11.0です。 functionの引数というと、tの事でしょうか? 宣言が必要なんですかね???
guest

0

http://www.jqref.net/deferred/done.php
http://www.jqref.net/ajax/ajax.php

Javascript

1for(i=0; i<3; i++){ 2 jQuery.ajax({ 3 url: 'http://example.com/'+i 4 ,type: 'GET' 5 }).done( function(data){ 6 console.log( data ); 7 day[i] = data.match(/\d日/); 8 console.log(day[i]); 9 }) 10}

done は success を呼び出す。success の第一引数は、戻り値そのもの

投稿2015/10/26 16:47

miya

総合スコア81

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

coinbura

2015/10/29 06:55

えっと、つまりresponseTextは不要。というご指摘ですよね? とりあえず省いてみます。
coinbura

2015/10/29 08:11

Cannot read property 'match' of undefined となってしまいました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問