通过ajax到php的多维数组通过json_decode变为null

时间:2011-03-10 21:12:49

标签: php javascript null json

我用jQuery收集数据,把它放到一个多维数组中,在它上面使用JSON.stringify并使用AJAX将它传递给PHP,出于某种原因,json_decode继续给我一个Syntax error, malformed JSON错误。

继承传递给PHP的JSON

[\"foo\",\"foobar did the baz\",[[\"bar\",\"kg\",\"200\"],[\"baz\",\"l\",\"1337\"]]]

奇怪的是我在JS中的多维数组上使用JSON.stringify。继承人我怎么把它放在一起

var dataz = [];
var arrayContainingAll = [];

$("li", "#ingredientlist").each(function() {
    var tempArray = [];
    tempArray.push($(".ingredientname", this).text());
    tempArray.push($(".unittext", this).text());
    tempArray.push($(".amounttext", this).text());
    arrayContainingAll.push(tempArray);
});

dataz.push($("h1").text());
dataz.push($("#method").val());
dataz.push(arrayContainingAll);
var json = JSON.stringify(dataz);

如何让PHP正确解析多维数组? 我通过传递3个不同的字符串化数组来修复它,但更多的是对多维数组失败的好奇心

用于显示所发生情况的PHP是:var_dump(json_decode($_POST['ingredients']));

因为显示我如何发布数据显然很重要,继承人JS要做ajax请求

$.ajax({
    url: '/api/savenewrecipe.php',
    type: 'POST',
    data: 'ingredients=' + json + "&name=" + $("h1").text() + "&method=" + $("#method").val(),
    success: function(result) {
        if (result.ok == true) {
            // @todo remove this for debugging purposes
            //document.location.href = '/recipe/' + result.id;
        }
        else {
            showError("Noget gik galt!", 2000);
        }
    }

});

1 个答案:

答案 0 :(得分:2)

如果您的服务器使用魔术引号,则需要删除它们:

if (get_magic_quotes_gpc()) {
  $_POST['ingredients'] = stripslashes($_POST['ingredients']);
}