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

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

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

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

JavaScript

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

jQuery

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

1157閲覧

Ajaxでjsonデータを渡したい

k0908

総合スコア102

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

JavaScript

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

jQuery

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/05/17 02:58

編集2018/05/17 04:43

Ajaxでjsonデータを渡したい。

var users = {{ users|tojson }}; $(function(){ $.ajax({ type: 'POST', dataType: 'json', url: 'http://localhost:8000/app’, data: users, }).done(function(response) { console.log(response); console.log(users); for (i = 0; i < users.length; i++) { console.log(“HERE”); A(users[i]); } }).fail(function(xhr,err){ console.log(xhr.status); }); });

とコードを書いて、users変数のjsonをAメソッドに渡したいが、できない。
console.log(users);で何も出力されていなく、console.log(“HERE”);も呼ばれていなかった。
console.log(response);は200番が返ってきているため、通信に問題はない。
Usersの渡し方に問題があるのか?どう直せば良いのか?

localhost:8000/app側は

@app.route("/app", methods=["GET","POST"]) def app(user): #データを辞書型でとってくる users= get_data(user) return render_template("index.html", users=users)

とpython・flaskを使い値を渡しています。
usersでは

[[100,200],[250,300],[150,240],[600,800]]

と二次元配列を得ている。

$(function(){ $.ajax({ type : 'post', url : 'http://localhost:8000/app’, data : JSON.stringify(users), contentType: 'application/JSON', dataType : 'JSON', scriptCharset: 'utf-8', success : function(data) { var data = response; for (i = 0; i < data.length; i++) { A(data[i]); } }, error : function(data) { // Error alert("error"); } }); })

と書いたところerrorとアラートが出た。

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

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

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

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

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

k0908

2018/05/17 03:07

質問が別かと思ったので別に投稿しました!
m.ts10806

2018/05/17 03:23

前の質問から一歩も進んでいない印象のための指摘です。
k0908

2018/05/17 03:34

おそらくそれは必要ないかと思います。usersのデータはjs側で取得できていて、http://localhost:8000/app 側ではGET・POSTが両方受け入れられるようになっているからです
m.ts10806

2018/05/17 03:37

必要ですよ。ajaxでhttp://localhost:8000/appがusersデータを受け取って何かしらの処理をした結果がresponseに入ってくるので。正しく取得して、意図した情報を返しているかはhttp://localhost:8000/appに書いてあるからです。
k0908

2018/05/17 04:15

情報を追加いたしました。もしお分かりでしたらお願いいたします
guest

回答2

0

まず

var users = {{ users|tojson }};

が怪しいです。
そしてajaxで呼び出したあとにdoneのコールバック内で
もってきたresponseではなくusersでforを回している意味もわかりません
そもそもusersが配列ではないのでは?

投稿2018/05/17 04:01

yambejp

総合スコア114784

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

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

k0908

2018/05/17 04:17

usersが配列ではないかはどのように確かめられますか?console.log(toString.call(users)); と出力すると[object Array]と出ました。初心者質問なのですがこれは配列という意味ですよね?
guest

0

ベストアンサー

変数 users をゴニョゴニョするのは一旦おいておくとして、 POST リクエストが正常に出来ているかを確かめたほうがよいのでは?
手っ取り早く ajax したいのであれば jQuery ajax ではなく、ブラウザ標準の Fetch API 使うことをおすすめします。
以下のコードは、data オブジェクトを JSON として POSTリクエストします。

こちらで動作確認できます。 https://codepen.io/og24715/pen/RyeqOv?editors=0010

js

1const url = 'https://httpbin.org/post'; 2const data = { 3 a: 1, 4 b: 2, 5}; 6 7fetch(url, { 8 method: 'POST', 9 headers: { 10 'Accept': 'application/json', 11 'Content-Type': 'application/json' 12 }, 13 body: JSON.stringify(data), 14}) 15.then(response => response.json()) 16.then(json => { 17 console.log(json); 18});

投稿2018/05/17 04:21

og24715

総合スコア832

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

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

k0908

2018/05/17 04:30

ありがとうございます。最終的にはusersのjsonをAメソッドに渡したいのですが、そのAメソッドに渡すコードをご提示のコードに書き加えるなら、どのように追加すればいいでしょうか?
og24715

2018/05/17 04:41 編集

ご提示のコードだと変数 users はPOSTリクエストの本文に見えるんですが間違いないですか。 であれば ajax 関係ないのでお好きな場所で A(users) とすればよいのでは。
k0908

2018/05/17 04:51

.then(json => { console.log(json); A(users); }); としても動かず、fetch(url, { の外で A(users);と書いても動きませんでした。。。
og24715

2018/05/17 05:04 編集

質問のタイトルを変更されたほうがよいとおもいます。 json を post するのは上のコードで間違いなく出来ているはずです。 あなたが何をしたいのか、 変数 users の出処がどこなのか、まるで分かりません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問