初めまして。
JavaScriptでどうにも分からない事が出来たため、ご質問させていただきます。
皆様の知恵をお借りいただければと思っております。
どうぞ、宜しく願いいたします。
##XHRのresponseTextがうまく取得できない
趣味でJavaScriptとPHPの非同期通信を使ったアプリを作ろうとしています。
現在分からない事は、この非同期通信の部分でresponseTextが取得できません。
この"取得できない"と言うのは少し語弊がありまして
"取得はできているが、そのデータを扱おうとした時に扱うことができない"の方が正しいかもしれません。
##実際みてみる
xhrオブジェクトの中身をみてみますと、やはり取得自体は出来ているようです。
しかしこれを
js
1console.log(xhr.responseText);
などで利用しようとすると
中身が空扱いになり、扱うことができません。
##理由が全然分からない
xhrオブジェクトのresponsTextプロパティには、間違いなく値は入っているにもかかわらず、
何故、その値を使用しようとするとできないのでしょうか?
皆様の知識でお教えいただければと思います。
宜しくお願いいたします。
##追記
ご指摘をいただきましたので、該当のJavaScriptファイルのソースコードを記載します。
宜しくお願いいたします。
js
1'use strict'; 2 3const w = window, 4 d = document 5 ; 6 7const $ = id => { 8 return d.getElementById(id); 9} 10 11const $t = tag => { 12 return d.getElementsByTagName(tag); 13} 14 15const $c = cls => { 16 return d.getElementsByClassName(cls); 17} 18 19class User{ 20 21 constructor(){ 22 const form = $t('form'); 23 this.xhr = new XMLHttpRequest(); 24 25 for(let i=0; i < form.length; i++){ 26 form[i].addEventListener('submit', (e) => { 27 return e.preventDefault(); 28 }); 29 } 30 31 $('tweet_btn').addEventListener('click', () => { 32 this.postTweet(); 33 this.getNewTweets(); 34 }); 35 36 this.xhr.onreadystatechange = () => { 37 if (this.xhr.readyState === 4 && this.xhr.status === 200){ 38 } 39 } 40 } 41 42 postTweet() { 43 const url = './tweet.php', 44 tweet_msg = $('tweet_msg').value, 45 data = { 46 tweet : tweet_msg, 47 mode : 'ALL' 48 } 49 ; 50 51 this.xhr.open('POST', url); 52 this.xhr.setRequestHeader('Content-Type', 'application/json;charset=UTF-8'); 53 this.xhr.send(JSON.stringify(data)); 54 } 55 56 getNewTweets() { 57 const url = './tweet.php', 58 latest = $c('tweet_date').item(0).innerText, 59 data = { 60 latest : latest, 61 mode : 'LATEST' 62 } 63 ; 64 65 this.xhr.open('POST', url); 66 this.xhr.setRequestHeader('Content-Type', 'application/json;charset=UTF-8'); 67 this.xhr.send(JSON.stringify(data)); 68 console.log(this.xhr.responseText); 69 } 70 71} 72 73const user = new User();
回答2件
あなたの回答
tips
プレビュー