🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

JavaScript

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

jQuery

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

Q&A

解決済

1回答

2521閲覧

JavaScript:responseTextを取得したい

Ykkykk

総合スコア140

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2019/09/26 00:57

編集2019/09/26 01:02

DjangoでJavaScriptを使用してPOST送信を行っています。
Viewの関数から返ってきたresponseTextをテンプレート上に表示したいのですが、responseTextを取得する方法がわかりません。

Javascript

1<script> 2 $(document).ready(function() { 3 $('.btn').on('click', function() { 4 var id = $(this).attr('id'); 5 var result = send_command(id); 6 // ここでresultの中からresponseTextを取得したいです 7 }); 8 }); 9 10 function send_command(mode){ 11 return $.post('/path/to/post/', 12 {"mode": mode} 13 ) 14 }; 15</script>

上記のvar resultの中は以下のようになっています。

{…} abort: function abort() always: function always() catch: function catch() done: function add() fail: function add() getAllResponseHeaders: function getAllResponseHeaders() getResponseHeader: function getResponseHeader() overrideMimeType: function overrideMimeType() pipe: function pipe() progress: function add() promise: function promise() readyState: 4 responseJSON: 200 responseText: "200" setRequestHeader: function setRequestHeader() state: function state() status: 200 statusCode: function statusCode() statusText: "OK" then: function then() <prototype>: Object { … }

最初のJavaScriptでPOST送信しているDjago側のビューは以下のようになっています。

Python

1class PostView(generic.View): 2 def post(self, request, *args, **kwargs): 3 result = hogehoge() 4 # このresultには"200"という文字列が入っています。 5 return HttpResponse( 6 result, 7 content_type="application/json; charset=UTF-8" 8 )

また、上記のreturnの一つ目の引数において、例えば

{'result': 'this is a result'}

のようなJson形式のものや、"result"のような文字列を指定すると、var resultが定義されません。
これはなぜなのでしょうか?
JavaScriptの中で

result.responseText

としてみたのですが、Undiefinedになってしまいます。
responseTextやresponseJSONを取得するにはどのようにすれば良いのでしょうか。
ご教示いただけますと幸いです。よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

resultをdoneから参照しては?

javascript

1result.done(function(data){ 2console.log(data); 3})

投稿2019/09/26 01:21

yambejp

総合スコア116661

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

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

Ykkykk

2019/09/26 01:31

.doneでこのように参照できるのですね!ありがとうございます! ただ、Djangoのビューで return HttpResponse("this is a message", content_type="application/json; charset=UTF-8")とするとコンソールに何も表示されなくなってしまいます。 ビューから返す値が数字であればコンソールに表示されるのですが、文字列やJSONを返すと表示されなくなってしまいます。。。 これは原因として何が考えられるでしょうか???
maisumakun

2019/09/26 01:34

JSONとして形式が正しくないからではないでしょうか。
yambejp

2019/09/26 01:36

$.postでもオプションの設定は可能ですが 汎用的な$.ajaxにして、細かい設定をするとよいかと doneにチェーンして .fail(function(xhr,err)){ console.log(err); }); すればエラーの状況が確認できるかもしれません
Ykkykk

2019/09/26 01:38

maisumakun様:形式は正しいと思います。。。またただの文字列でも表示されない状態です。。。 yambejp様:ajaxの使い方がまだわかっていないため、頂いたコメントを参考に学習をします。ありがとうございます!
maisumakun

2019/09/26 01:45

「ただの文字列」はJSONとして正しくありません。二重引用符付きで送信する必要があります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問