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

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

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

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

JavaScript

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

Q&A

解決済

2回答

5553閲覧

phpにjsonをpostするとデータが欠落する

masayoshi001

総合スコア18

PHP

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

JavaScript

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

0グッド

0クリップ

投稿2018/01/30 13:10

Javascriptからjson形式のデータをajaxでphp(5.3)にpostしたいです.
jsonのデータは1.2MB程度のcsvファイルを加工して生成しています.
jsonデータは問題ありません.(jsonデータの検証サイトで確認済)

phpにpostすると,データが途中で欠落してしまいます.
php.iniのmax_input_varを試しに 100,000に変更しても結果は変わらず,同じ位置で欠落していました.

上記の問題は何が原因で発生するのでしょうか?

お分かりになられる方がいらっしゃいましたら,何卒ご教授宜しくお願い致します.

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

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

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

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

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

yambejp

2018/01/30 13:42

ajaxでなければ全部渡るのでしょうか?
masayoshi001

2018/01/31 01:44

ご回答ありがとうございます.submitしてpostした場合は,問題なくデータ送信出来ておりました.
guest

回答2

0

1.2Mのファイルがajaxで送れるかチェック用sampleです
consoleで戻り値が1200000であれば送れています
とりあえずチェックしてみて下さい

javascript

1$(function() { 2 $('input[type=button][value=go]').on('click',function(){ 3 var data= Array(1200000).fill(97); 4 var blob = new Blob( [new Uint8Array(data).buffer] ); 5 var fr = new FileReader(); 6 fr.onload = function(e){ 7 var fd=new FormData(); 8 fd.append("mydata",e.target.result); 9 $.ajax({ 10 "url":"send.php", 11 "type":"post", 12 "data":fd, 13 "processData": false, 14 "contentType": false, 15 }).done(function(data){ 16 console.log(data); 17 }); 18 }; 19 fr.readAsText(blob); 20 }); 21}); 22
  • send.php

HTML

1<input type="button" value="go">

追記

上記で1.2Mが受け取れているなら次に文字列を送ってチェックします

javascript

1$(function() { 2 $('input[type=button][value=go]').on('click',function(){ 3 var data="あ".repeat(400000); 4 /*utfで「あ」は3バイトなので1.2Mのファイルになる*/ 5 var fr=new FileReader(); 6 fr.addEventListener('load',function(e){ 7 var fd=new FormData(); 8 fd.append("mydata",e.target.result); 9 $.ajax({ 10 "url":"send.php", 11 "type":"post", 12 "data":fd, 13 "processData": false, 14 "contentType": false, 15 }).done(function(data){ 16 console.log(data); 17 }); 18 }); 19 fr.readAsText(new Blob([data])); 20 }); 21});

投稿2018/01/31 00:30

編集2018/01/31 03:11
yambejp

総合スコア114843

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

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

masayoshi001

2018/01/31 12:46

ご回答ありがとうございました. ご提示いただいた2つのチェックを行いました. 最初のチェックは1200000と表示され, 次のチェックでは ’あ' が 400000 送信出来ていることがわかりました.
guest

0

ベストアンサー

max_input_varsではなく、post_max_sizeやupload_max_filesizeあたりを見ないとダメかと。
参考

投稿2018/01/30 13:26

turbgraphics200

総合スコア4267

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

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

masayoshi001

2018/01/30 13:35

ご回答ありがとうございました. ご指摘の項目の設定値を確認したところ,どちらも50Mに設定されておりました. 多分,これが原因ではなさそうです.
turbgraphics200

2018/01/30 13:41

受信できたサイズを調べて、そのサイズでどの設定値が影響しているのか調べてみるのも手かと
masayoshi001

2018/01/31 13:01

ご回答ありがとうございます. 上記ご助言をもとに,設定方法などを調べたところ,設定方法がわかりました. httpd.confにphp_value max_input_vars 500000と追加すると, 問題なくpost出来ました. ありがとうございました.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問