Я использую скрипт 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)
at designer.js: 340
Slice
- это функция внутри Format
. В конце функции Format
она возвращает переменную out
. Я попытался заменить данные на data: { test: out }
, но это также оказалось неудачным.
В PHP я называю результат следующим образом;
$stringData = $_POST['submit'];
Что возвращает следующее: Array ( [submit] => Submit )
Когда console.log (out) вызывается без установленного кода ajax, он возвращает значения правильно. Как только код 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;
}