[英]JQuery Ajax Tagit Array to PHP returning [object Object]
[英]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?
謝謝。
=================
如果我用
$.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時,它是一個空數組?
=================
將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.