私は持っている:
var apiQuizData = {'ect stuff removed...',answers:{}};
$.each(dataCEActiveQuiz.quiz_data, function(index, answer) {
if(answer.selected == undefined){
apiQuizData.answers[answer.id] = 0;
} else {
apiQuizData.answers[answer.id] = answer.selected;
}
});
$.post(URL, apiQuizData, function(data) {
クロム検査ツールを介してヘッダーから送信されたフォームデータを見ると、次のように表示されます。
// url decoded
answers[28194]:112768
answers[28195]:112773
answers[28199]:112788
answers[28202]:112803
answers[28204]:112809
// url encoded
answers%5B28194%5D:112768
answers%5B28195%5D:112773
answers%5B28199%5D:112788
answers%5B28202%5D:112803
answers%5B28204%5D:112809
// query string
answers%5B28195%5D=112773&answers%5B28199%5D=112788&answers%5B28202%5D=112803&answers%5B28204%5D=112809
PHPで私が使用する
$sent_data = file_get_contents('php://input');
$sent_data_decoded = json_decode($sent_data, true);
phpが受け取る文字列は
&answers=&answers=&answers=&answers=&answers=
データが値とともにphpに送られるようにするには、データに対して何をする必要がありますか?
ありがとう。
=================
更新 1
私が使用する場合
$.post(URL, JSON.stringify(apiQuizData), function(data) {
送られてくるのはこれ
{...extra stuff...,"answers":{"28195":"112773","28199":"112791","28201":"112796","28202":"112800","28204":"112810"}}
PHP からjson_decode(file_get_contents('php://input'), true);
{...extrastuff...}id%22%3A952077%2C%22answers%22%3A%7B%2228195%22%3A%22112
データの print_r を実行すると、空の配列になりますか?
=================
更新 2 - 作業中
jquery の投稿を次のように更新しました
$.post(URL + 'sendCEQuizResults', {jsonstringify: JSON.stringify(apiQuizData)}, function(data) {
古い方法でデータを送信している新しい方法を処理するために、php 受信コードを更新しました
$sent_data = file_get_contents('php://input');
if(substr($sent_data, 0, 13) == 'jsonstringify')
{
parse_str($sent_data);
$sent_data_decoded = json_decode($jsonstringify, true);
} else
{
$sent_data_decoded = json_decode($sent_data, true);
}
JSON.stringify(apiQuizData) を別のオブジェクトの値に割り当てないと、何らかの理由で機能しません。ブラウザはテキスト自体で窒息しているように見えましたが、それはそれ自体が巨大なテキスト文字列だったからでしょうか? わからない。いずれにせよ、上記の更新 #2 により、私が抱えていた問題が解決されました。
ありがとう。