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

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

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

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

5回答

7071閲覧

Ajaxで文字列を送信し、HTMLに反映させる方法

sh-o

総合スコア20

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2015/09/10 15:22

編集2015/09/10 15:47

Ajaxを用いて特定のテキストをjavascriptからサーバーに送信し、
サーバーでそれを確認、JSONで返答し、Webブラウザの特定のエリアに追記

という処理をしたいと考えているのですが、エラーの原因がわからず、行きず待ってしまっている状況です。

コードは、

javascript

1function test() { 2~~~~~ 3~~~~~ 4 var edata = { 5 'data': data00//data00にはすでに文字列が代入されています。 6 }; 7 8 textarea = $('#textarea'); 9 10 $.ajax("test.php", { 11 type: 'POST', 12 dataType: 'json', 13 data: edata, 14 15 success: function(data) { 16 alert("テスト表示");//ここのalertはきちんと表示されます。 17 textarea.append("<p>追加用メッセージ</p>");//ここでエラーが発生します。 18 } 19 }); 20}

test.phpは、

php

1<?php 2echo json_encode(array('FLAG' => true)); 3?>

そして、追記に使用したい部分(HTML)は、

html

1<div id="area0"> 2 <div id="textarea"> 3 <p>test</p> 4 </div> 5</div>

としております。

これをfirefoxで実行をすると、
TypeError: textarea.append is not a function
というエラーが表示されてしまいます。

このHTMLのページ内にはここ以外にも類似のことをしている部分があり、
そちらは正常に動作しております。
また、追記する場所を
status.appendからそちらに変更すると、その場所に追記がされます。

別の場所に追記が可能であることと、直前のアラートまでがきちんと動作しているので、
サーバーサイドではなく、今回追記したいエリア(status)を作っている側(javascriptやcss等)に問題があると考えております。

どなたかご教授よろしくお願いいたします。

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

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

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

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

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

guest

回答5

0

ajax内の処理が実行される前にtextareaの中身が書き換わっていると思います。

textareaが変更される処理がないか確認すれば解決すると思います。

ajax内の処理は時間差で処理される為、ajax前の処理の見直しだけではなくajax後の処理の見直しが必要になるので注意してください。

またtextareaのにvarがついていないので、global変数になっている点も注意してください。
test関数以外の場所で変更される恐れがあります。

投稿2015/09/11 00:27

ymknjugg

総合スコア131

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

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

0

textareaが取得できていないのかな?

textarea = $('#textarea');

をsuccessの中に入れてみたらどうでしょう?

もしくはglobalなobjectに入れてから参照してみるとか。

投稿2015/09/11 06:34

mrkakky

総合スコア25

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

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

0

私ならこんな風に考えます。
textarea.append is not a function
textarea.appendはfunctionじゃないと言っているので、
textareaが正しく取れてないんじゃないか?
そこで、alert(textarea)とやってみて、objectなどと出るか確かめてみる。
あるいは、

<div id="textarea" name="testだよ"> alert(textarea.attr('name')); とやってtestだよと出るか確かめてみる。 出ないなら、textareaがちゃんととれていないので、そこ見る。 textareaに代入するんではなく、 success: function(data) { alert($('#textarea').attr('name')); でtestだよと出るか確かめてみる。 みたいな。 答えになってませんが。

投稿2015/09/10 15:58

lightwill

総合スコア962

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

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

sh-o

2015/09/11 15:02

デバック方法などいろいろと教えていただき、ありがとうございます。 デバックの際に参考にさせていただきます。
guest

0

ベストアンサー

javascript

1 $.ajax("test.php", { 2 type: 'POST', 3 dataType: 'json', 4 data: edata, 5 success: function(data) { 6 $("#textarea").append("<p>追加用メッセージ</p>");//ここでエラーが発生します。 7 } 8 });

投稿2015/09/10 15:54

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

sh-o

2015/09/11 14:48

ご解凍ありがとうございました。 .append前の部分を変数等を使わず直接書いたら実行できました。 ありがとうございました
guest

0

status = $('#status');
で、statusというIDを持つオブジェクトを探していますが、HTMLは

<div id="textarea"> となっているので、見つけられていないのでは。

投稿2015/09/10 15:30

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

sh-o

2015/09/10 15:48

ご回答ありがとうございます。 ご指摘いただいたIDの部分ですが、コピペの際のミスでしたので、修正させていただきました。 質問させていただきながら、肝心な部分にミスがあってしまい申し訳ございません。
退会済みユーザー

退会済みユーザー

2015/09/10 16:07

手元に抜き出した処理だと動作したので、なにか簡単なミスなんじゃないかなと思います。 console.dir(textarea); とかで、オブジェクトを見つけられているか確認した方がよさそうです。 同じIDが複数個あって、取得に失敗しているとか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問