やすまんの技術ブログ

駆け出しエンジニアが日々学んだこと、わからなかったことなどをまとめておくブログ。忘備録としても使います。

自動更新機能で値がundefindになってしまう。

結論

$.each(messages, function(message){

ではなく

$.each(messages, function(i, message){

 

に変更する。

 

 

経緯

チャットアプリの自動更新機能を実装する際に相手方に送信したメッセージがundefindになってしまう

https://gyazo.com/fb2ffabd585185d879af9b8cb6e3cceb

 

原因は、each文の使い方に問題があった。

 

新しいメッセージを送信したらajaxで必要な情報を引っ張ってきて、doneに送るのですが

$.each(messages, function(message){
// console.log(message)
insertHTML += buildHTML(message)
// console.log(insertHTML)

になってしまっていた。

 

messagesの引数がmessageだけだと何番のmessageを持ってこなければいけないのかが分からず、undefindが出てしまう。

したがって

$.each(messages, function(i, message){
// console.log(message)
insertHTML += buildHTML(message)
// console.log(insertHTML)

 

『i』(indexの略)をつけてあげることで、何番のmessageなのかがわかるようになる。

これで正常に表示させることができる。

 

最初はこの『i』の存在を完全に忘れており、「id」を打ち込んだが解決できなかった。