パソコンスクールでJavaScriptを勉強しています。
配信されているRSSのXMLファイルをダウンロードして
ページ上に出力するという課題の勉強をしています。
※サンプルのコードは以下の通りです。
ajaxについて、月を英字で表示する、日を2桁表示する
(2桁表示 = 1→01)、etc.いろいろ学びました。
その中で今度は
ダウンロードしたXMLファイルの中にオブジェクトが何個あるのか求める
という課題になりました。
※オブジェクト:ページ上に出力する記事の数
=xmlファイルからダウンロードした「title」タグの個数
私の考えでは以下のコードの「1番」でtitleタグの数を取得して
コンソールに出力できると思っていました。
ですが画像の通り「1番」のコンソールへの出力結果は「0」になります。
「3番」の結果が「[]」になることも含めて
配列型で変数の宣言をすることが間違っているのだと思います。
すいませんが正しい変数の宣言を含め、
以下のサンプルコードで記事の数(ダウンロードしたtitleタグ)を
取得する方法を教えて下さい。
※取得した結果の出力先はコンソールでOKです。
追記
コンソールへの出力は「5番」までありますが、
「2番」、「4番」、「5番」は動作確認のため出力してみただけです。
今回の処理とは無関係です。
お手数ですが、詳しい方、説明の上手な方
よろしくお願いします。
Html
1<br> 2<p>titlId</p> 3 4<ul id="titlId" style="padding: 0px 10px;"></ul> 5 6<br> 7<br> 8 9<script src="http://code.jquery.com/jquery-1.11.3.min.js"></script> 10 11
JavaScript
1<script> 2//配列型で宣言 3var GlbtitNo = []; 4 5//文字列型で宣言 6var GlbtitSt = String; 7 8//1番 配列型 9console.log(GlbtitNo.length); 10 11//2番 文字列型 12console.log(GlbtitSt.length); 13console.log(); //スペース用 14 15//3番 配列型 16console.log(GlbtitNo); 17 18//4番 文字列型 19console.log(GlbtitSt); 20 21//スペース用 22console.log(''); 23 24$(document).ready(function() { 25 var rssURL = "https://book.studio947.net/feed/" 26 $.ajax({ 27 url: 'cdxml.php', 28 type: 'GET', 29 dataType: 'xml', 30 data: { 31 url: rssURL 32 } 33 }) 34 35 .done(function(data) { 36 $(data).find('item').each(function() { 37 var titRSS = $(this).find('title').text(); 38 var likRSS = $(this).find('link').text(); 39 40 //グローバル変数用 41 GlbtitNo = titRSS; 42 GlbtitSt = titRSS; 43 44 //5番 文字数 45 console.log(titRSS.length); 46 47 var dteRSS = $(this).find('pubDate').text(); 48 var DateOj = new Date(dteRSS) 49 50 var dateDg = DateOj.getDate() 51 52 addZero = function(num, digit) { 53 var numString = String(num); 54 while (numString.length < digit) { 55 numString = '0' + numString; 56 } 57 return numString; 58 } 59 60 var montEg = ['Jan', 'Feb', 'Mar', 'Apl', 'May', 'Jun', 'Jul', 'Aug', 61 'Sep.', 'Oct', 'Nov', 'Dec' 62 ] 63 64 var DateAp = ' ' + DateOj.getFullYear() + '/' + montEg[DateOj.getMonth()] + 65 '/' + addZero(dateDg, 2); 66 67 $('#titlId') 68 .append($('<li></li>') 69 70 .append($('<a target="_blank"></a>').attr('href', likRSS).text( 71 titRSS)) 72 .append(DateAp) 73 ) 74 75 }); //each 76 }) //done 77 78 .fail(function() { 79 window.alert('読み込みエラー'); 80 }) //fail 81}); //ready 82</script> 83
php
1<?php 2if(isset($_GET["url"]) && preg_match("/^https?:/",$_GET["url"])){ 3 $ch = curl_init($_GET["url"]); 4 curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 5 curl_setopt($ch, CURLOPT_TIMEOUT, 60); 6 $data = curl_exec($ch); 7 curl_close($ch); 8 echo $data; 9}else{ 10 echo "ERROR!"; 11}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/28 05:11
2019/04/28 05:31
2019/04/28 05:40
2019/04/28 05:53
2019/04/28 06:06
2019/04/28 06:52
2019/04/28 07:32