![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e3b2dd4)
jQueryとPHPでAjaxを利用して入力フォームを作っています。
PHP側で入力データがnullで返ってくるので困っています。
ググって調べたのを試しましたが、いずれもnullが返ってきました。
こんな感じで入力値がnullで出力されてしまいます。
{"id":null,"hoge":"hogehoge"}
ソースコードは以下の通りです。
top.html
<html>
<head>
<meta charset="UTF-8">
<title>入力フォーム</title>
</head>
<body>
<form id="bitobopass_table" name="bitobopass_table">
<table id="passtable">
<tr>
<td><input id="twid" name="twid" type="text" placeholder="ID"></td>
</tr>
</table>
<button type="button" id="sendBtn" name="sendBtn">送信</button>
</form>
<table id="export01">
<tr>
<td>id</td>
<td>pass</td>
</tr>
</table>
<script src="https://code.jquery.com/jquery-3.6.0.js"></script>
<script src="js/receive.js"></script>
</body>
</html>
receive.js
$(function() {
$('#sendBtn').on('click', function(event) {
let id = $('#twid').val();
$.ajax({
type: "POST",
url: "../request.php",
data: { "id" : id },
dataType : "json"
}).done(function(){
console.log('success');
}).fail(function(){
console.log('fail');
});
});
});
request.php
<?php
$id = $_POST['id'];
$list = array("id" => $id, "hoge" => "hogehoge");
header("Content-type: application/json; charset=UTF-8");
echo json_encode($list);
exit;
?>
phpで$idの部分がnullになってしまいます。
・nullになる原因は何か
・どのようにすればnullが解決できるか
ご回答いただけると嬉しいです。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
No2です。
>JSのログではnullではない値が出力されています。
>PHPをブラウザから直接見るとnullになっている状態です
何をどのように試しているのか不明ですけれど・・・
>JSのログではnullではない値が出力されています。
「nullではない値」の意味がわかりませんけれど、ご提示のソースのままで実行すれば(=ボタンを押して送信すれば)、コンソールには「success」か「fail」のどちらかしか表示されないはずです。
(スクリプトにエラーがある場合は、その旨が表示されて実行が打ち切られますが・・)
>PHPをブラウザから直接見るとnullになっている状態です
ブラウザで直接phpのアドレスにアクセスしているってことでしょうか?
もしそうなら、Ajaxは関係ありませんね。
その場合は、単にリクエストしているだけで何も送信していないので、ご提示のコードだとphp側でエラーが発生します。
その旨の警告が返されて、ブラウザに表示されていませんか?
No2にも記しましたが、値を取得できずに定義しただけの状態になるのでnull値になると考えられます。
Json化した文字列は
{"id":null,"hoge":"hogehoge"}
となり、ブラウザはそのままをレスポンスとして出力します。
何をどうしたいのかさっぱりわかりませんけれど、エラーを回避したければ、php側でチェックを行えば宜しいでしょう。
http://memo.imomushi.com/php/getya-postno-parame …
値が存在しない場合に、デフォルトの値を返したいのなら、そのようにする必要があります。
ご提示のコードはそのような使い方を想定していないと思いますが、どうやら、ご提示のコードとは異なることを期待しているようなので、どのように使おうとしているのかすらわからなくなりましたけれど・・・
そもそも、単にアクセスするだけの利用なら、入力データのチェックや取得をする必要もなく、出力だけを行えばよいです。(ajaxは関係ありません)
自己解決しました。
PHPをブラウザから直接見るとダメなようで、PHP経由でAjaxでデータをメール送信することに成功しました。
No.2
- 回答日時:
こんにちは
あまりajaxを利用したことがないので、よくはわかっていませんけれど・・
見たところ動作しそうなので、私の環境で試してみましたが動作するようですね。
>こんな感じで入力値がnullで出力されてしまいます。
>{"id":null,"hoge":"hogehoge"}
ご提示の範囲内には値を出力している部分がありませんが、これはPHP側での値でしょうか?
それとも、javascript側での値でしょうか?
また、スクリプト側では success の出力がされているという解釈で良いのでしょうか?
その上で、受信内容が
>{"id":null,"hoge":"hogehoge"}
だという意味でしょうか?
スクリプトからの送信時にはエンコードされるので、null 値にはならなさそうな気がしましたので、試しに送信前に、
id = null;
と明示的に代入してから送ってみました。
(送信前に、console出力すれば、当然「null」と表示されます)
この場合はphp側の、
>$id = $_P OST['id'];(←投稿時受付けないので空白を入れてます)
で、(想像通り)空白文字列として取得されています。
当然、その後返す値もnullではなく、空白文字列になります。
(php 8.0.0 is_null() でテスト)
>phpで$idの部分がnullになってしまいます。
>・nullになる原因は何か
送信データに "id" というkeyが存在しなければ、未定義でnull値になる可能性がありそうですが、その場合はエラーが発生するので、結果が success にはならないはずです。
また、php側で、
$id = null;
と直接代入してしまえば返送される値も null として送られ、受信側(javascript)でも null として認識されるようです。
※ ご質問の事象を再現できないので、あまり役に立たないとは思いますが、何かのご参考にでもなれば。
No.1
- 回答日時:
receive.jsの
let idをvar idにしたらどうなりますか?
letはブロック内でのみ有効らしいので$.ajaxのブロック内では別のid変数が出来上がってるかもしれません
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript プログラムがうまく動きませんレビューお願いします 1 2022/07/10 05:08
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「黒歴史」教えて下さい
- ・2024年においていきたいもの
- ・我が家のお雑煮スタイル、教えて下さい
- ・店員も客も斜め上を行くデパートの福袋
- ・食べられるかと思ったけど…ダメでした
- ・【大喜利】【投稿~12/28】こんなおせち料理は嫌だ
- ・前回の年越しの瞬間、何してた?
- ・【お題】マッチョ習字
- ・モテ期を経験した方いらっしゃいますか?
- ・一番最初にネットにつないだのはいつ?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチファイル 特定ウインドウ...
-
ワードでA3横の画面にして、文...
-
GASでスプレッドシートの一番上...
-
Base64に変換したHTMLの<script...
-
1枚の画像をクリックすると複数...
-
データ入力シートから別シート...
-
Ajax を Fetch API に 書き換え...
-
bxsliderで複数のvimeoスライド...
-
Texで図と表を並べたときのキャ...
-
PDFを(htmlのように)無限に縦...
-
bxsliderで最初に縦に複数表示...
-
データ受け渡しについて
-
入力フォームの値をQRコードで...
-
同一ページ移動時ハンバーガー...
-
ナイトボットのAliasについて
-
これってなんの電話かわかりま...
-
VBAでクイズゲームの作り方
-
以下のURL入れますか?皆さんは↓
-
画像のドットの部分が抜けてい...
-
Chinapost こよパズルどう動か...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ajaxからphpにpsotしたときの日...
-
JavascriptからPHPへのAjax通信...
-
jQueryのblockUIをformのボタン...
-
JSONをperlで受け取る方法
-
jQueryを使いformでsubmitした...
-
jQuery を外部ファイルから呼び...
-
Ajax サーバーに負荷かかります...
-
jquery,ajaxによるphp通信でnull
-
jquery × php × mysql 非同期で...
-
jQueryで外部テキストファイル...
-
jQuery,Ajaxでcgiに接続する方...
-
jQuery3 reset()が効かない。
-
eval、$.eachで順番が入れ替わ...
-
Ajax・jQueryでGET時にIE...
-
ページを遷移せずにデータ送信
-
Ajax・jQueryでGETとPOSTする方法
-
ime入力中にcssを変更する方法
-
Ajaxでフォームデータを連続登...
-
AjaxでJSONを受信すると、文字...
-
JQueryの変数の扱いで弱ってい...
おすすめ情報
JSのログではnullではない値が出力されています。
PHPをブラウザから直接見るとnullになっている状態です。
そのままtxtやjsonに入力データを渡せば良い感じですか?