簡體   English   中英

jQuery ajax對象數組php

[英]jquery ajax object array php

我有:

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) {

如果我查看通過chromes inspect工具通過標題提交的表單數據,則會顯示:

// 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解決了我遇到的問題。

謝謝。

將對象字符串化為JSON字符串:

$.post(URL, JSON.stringify(apiQuizData), function(data) {

在回答您的問題之前,我想鼓勵您遵循“問問題”的建議,以幫助願意幫助您的人們回答他們的所有知識。 您的模棱兩可,我開始有些困難地了解您的需求。


您可能要為此使用php parse_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

?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM