0

私は持っている:

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 により、私が抱えていた問題が解決されました。

ありがとう。

4

2 に答える 2

0

あなたの質問に答える前に、「質問する」の推奨事項に従うことをお勧めします. あなたのものはあまりにも曖昧で、私はあなたが何を必要としているのかを理解するのに少し苦労しました。


これには phpparse_str関数を使用できます。

<?php
    $str = "first=value&arr[]=foo+bar&arr[]=baz";
    parse_str($str);
    echo $first;  // value
    echo $arr[0]; // foo bar
    echo $arr[1]; // baz

    parse_str($str, $output);
    echo $output['first'];  // value
    echo $output['arr'][0]; // foo bar
    echo $output['arr'][1]; // baz

?>
于 2013-05-02T19:53:42.790 に答える