繁体   English   中英

将字符串化的JSON返回给PHP

[英]Returning a stringified JSON to PHP

我正在使用JQuery脚本来操作图像。 到目前为止,除了将数据返回给PHP之外,所有函数都按预期工作。 我已经尝试了几个我在Stackoverflow上找到的例子,但我一直无法返回数据而没有任何错误。

注意:JavaScript不是我的主要语言,我以前使用Ajax的尝试都失败了。

    $.ajax({
        type: "POST",
        url: "/foo/bar.php",
        datatype: "json",
        data: { 
            submit: JSON.stringify(format(), null, 2) 
        },
        cache: false,
        success: function() {
            console.log("Order Submitted");
        }
    });

这是生成的错误:

designer.js:276 Uncaught TypeError:无法读取未定义的属性“slice”
格式(designer.js:276)
在designer.js:340

SliceFormat一个函数。 Format函数的末尾,它返回一个变量out 我试图用data: { test: out }替换data: { test: out } ,但事实证明这也是不成功的。

在PHP中,我将结果调用如下; $stringData = $_POST['submit']; 返回以下内容: Array ( [submit] => Submit )

在没有ajax代码的情况下调用console.log(out)时,它会正确返回值。 一旦添加了ajax代码,脚本的一部分就会停止按预期运行。

function format() {
var all = rects.slice().sort(function(d, f){ return d[0] - f[0]});
var lst = null;
var out = [];

for (var i = 0; i < all.length; i++) {
        var cur = all[i];
        var pen = cur[0];

        if (lst != pen) {
                var locs = [];

                out.push(locs);
                lst = pen;
            }
            var ecl = cur[1].pos;
            var pos =
            {
                pos: [
                    round(ecl[0] / size.x),
                    round(ecl[1] / size.y),
                    round(ecl[2] / size.x),
                    round(ecl[3] / size.y)
                    ]
            };

        if(typeof cur[1].colour !== 'undefined'){
                pos.colour = cur[1].colour;
            }

        if(typeof cur[1].filter !== 'undefined'){
                pos.filter = cur[1].filter;
            }
    locs.push(pos);
}
console.log(JSON.stringify(out, null, 2));
return out;

}

通常,错误Cannot read property 'slice' of undefined意味着你在不存在的东西上调用.slice()

您的format函数的第一行确实生成了rects.slice() - 但是您没有显示此rects变量的来源(它似乎是全局的)。

鉴于这是您显示的代码中唯一的slice调用,可能发生的是全局变量rects确实是未定义的。

添加console.log(rects)作为format函数的第一行将帮助您调试它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM