我正在使用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未捕获的TypeError:无法读取未定义的属性“切片”
格式(designer.js:276)
在designer.js:340
Slice
是Format
内部的函数。在Format
函数的末尾,它返回一个变量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;
}
答案 0 :(得分:0)
通常,错误Cannot read property 'slice' of undefined
表示您在不存在的地方调用.slice()
。
format
函数的第一行确实产生了rects.slice()
-但是您没有显示此rects
变量的来源(它似乎是全局的)。
鉴于这是您显示的代码中对slice
的唯一调用,可能发生的是全局变量rects
确实未定义。
将console.log(rects)
添加为format
函数的第一行将帮助您调试它。