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

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

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

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

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

jQuery

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

Ajax

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

Q&A

解決済

2回答

1851閲覧

ajaxを使ってJavascriptとPHPの間でデータをやりとりしたい。

rink

総合スコア80

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

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

jQuery

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

Ajax

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

0グッド

0クリップ

投稿2020/01/25 13:10

編集2020/01/25 15:26

javaスクリプトとPHPの間でデータのやり取りをしたいです。

html

1<!DOCTYPE html> 2<html> 3<head> 4 <meta charset="utf-8"> 5 <title>Ajax</title> 6 <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> 7 <script> 8 $(function(){ 9 $("#button1").on('click', function(event){ 10 event.preventDefault(); 11 var param = { "text": "Hello" }; 12 13 $.ajax({ 14 type: "GET", 15 url: "get-jsonp.php", 16 data: param, 17 crossDomain: true, 18 dataType : "jsonp", 19 scriptCharset: 'utf-8' 20 }).done(function(data){ 21 alert(data.text); 22 }).fail(function(XMLHttpRequest, textStatus, errorThrown){ 23 alert(errorThrown); 24 }); 25 }); 26 }); 27</script> 28 29</head> 30<body> 31 <button id="button1">submit</button> 32</body> 33</html> 34

php

1<?php 2$text = filter_input(INPUT_GET, 'text'); 3$callback = filter_input(INPUT_GET, 'callback'); 4$callback = htmlspecialchars(strip_tags($callback)); 5 6$param = ['text' => $text . ", World!"]; 7 8header('Content-type: text/javascript; charset=utf-8'); 9printf("{$callback}(%s)", json_encode( $param )); 10

これで、ajax.htmlを開くと、buttonが出てきて、クリックしたら、HelloというTextにWorldがくっついたものが表示されるはずなのですが、できません。
どうすればよいでしょうか、よろしくお願い致します。

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

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

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

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

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

m.ts10806

2020/01/25 13:19

doneでdataをconsole.logすると何が出ますか? またcallbackというキーは送信されていませんがどういうつもりで組まれてますか?
rink

2020/01/25 13:25

error: tbb_requestDispatcherと出てきます。 色々調べていて、それっぽいものをつけてしまった感じです。消してしまっても大丈夫です。
guest

回答2

0

そもそもでいうと下記は文法エラーです

text = filter_input(INPUT_GET, 'text');

代入先がtextと定数になってます。
※ここをなおして直るとは限りません

また、返すのがJSONであればheaderもJSONで宣言すべきですし、レスポンス結果をdata.textのように取りたいのでしたらそのままjson_encodeをprintされた方が良いです。
sprintfで今の引数では正しくオブジェクトが認識されないと思います。
いずれにしてもdoneで受けとるdataは直接配下のプロパティ参照するより中身や通信結果のコードが正常かどうか確かめてから参照されたほうが安全です。

投稿2020/01/25 13:32

m.ts10806

総合スコア80850

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

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

rink

2020/01/25 13:49

ご回答ありがとうございます。 textじゃだめでしょうか?
rink

2020/01/25 14:30 編集

いつもごめんなさい。
takepan1973

2020/01/25 14:39

textじゃだめというか、PHPの場合は変数は$がつくんですよ……
rink

2020/01/25 15:01

ごめんなさい!それは直しました…でもなおりませんでした
takepan1973

2020/01/25 15:18

直したんなら、質問文の方も直した方が良いんじゃないでしょうかね…… ちなみに私の手元(local)でやったら動きましたよ。 どこの環境で実行していますか? あと、「なおりませんでした」とかの表現は避けるようにしましょう。 何が起こるのか。エラーメッセージは出るのか(DeveloperTools上とかで) デバッグコード(console.log()とか)仕込んで、どこまで想定通りの挙動をしているか、とか……
rink

2020/01/25 15:25

ご回答ありがとうございます。 質問文直します。 自分もlocalなんですけど、動きません。どこでこの違いが出るんでしょうか…
m.ts10806

2020/01/25 23:53

「直った」「直らない」「動いた」「動かない」って誰にも状況分からないので 具体的に記載してください。
rink

2020/01/26 05:15

ajax.html の textを$textにしました。 また、urlの値をajax.phpにしました。
guest

0

自己解決

ajax.htmlのurlの値が間違っていました…。
ご回答くださったm.ts10806様、takepan1973様、ありがとうございました。ご迷惑をおかけしました。

投稿2020/01/25 15:34

rink

総合スコア80

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

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

takepan1973

2020/01/25 15:39

ブホッ…… まぁ、直って何よりです。 次からは、その部分も確認するようにしてくださいね……
rink

2020/01/25 15:46

すいません… ほんとにご迷惑おかけしました…! ありがとうございました!
m.ts10806

2020/01/25 23:54

ブラウザのコンソールにエラー出てるはずですけども。
rink

2020/01/26 05:14

そうですよね…
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問