javascript — объект formData, отправленный с jQuery ajax на сервер, возвращает пустой массив в случае успеха

название в основном говорит обо всем.

Я собираю некоторые данные и добавляю их в объект formData, чтобы поместить их в мой файл PHP и обработать все остальное.

Моя функция Ajax:

save.addEventListener("click", function(e){
e.preventDefault();
getAllContents();
console.log(updateObj);

updateObj = JSON.stringify(updateObj);
console.log(updateObj);

$.ajax({
url: "test.php",
type: "POST",
data: updateObj,
success: function(response){
console.log("Success: ", response);
},
error: function(response){
console.log("Error: ", response);
}
});
});

UpdateObj содержит все, что я добавил в объект formData. Журнал консоли этой переменной возвращает все. Так что проблема должна быть прямо в ajax POST.

Обновить Содержимое console.log (updateObj):

[{"row_id":1,"status":"Anmeldung","ma_name":"AA","datum":"/","fa1":"testname1","fa2":"testname2","limit":"10.000","gruppe_kredit":"/","omv_kdnr":"8124213","sap_kdnr":"/","fos":"/","hga_kdnr":"/"},{"row_id":3,"status":"Anmeldung","ma_name":"AA","datum":"/","fa1":"ame1","fa2":"name2","limit":"12.000","gruppe_kredit":"/","omv_kdnr":"81515616","sap_kdnr":"/","fos":"/","hga_kdnr":"/"},{"row_id":2,"status":"Kunde","ma_name":"AA","datum":"/","fa1":"newname1","fa2":"newname2","limit":"15.323","gruppe_kredit":"/","omv_kdnr":"81515616","sap_kdnr":"/","fos":"/","hga_kdnr":"/"}]

Мой PHP-файл содержит только print_r из $_POST

<?php
print_r($_POST);
?>

Это то, что моя функция успеха журналов вызовов ajax:

success:  Array
(
)

UPDATE2

Вот как мой объект formData заполняется:

// console.log($test.length);
var updateObj = [];

function getAllContents(){
var $tableTr = $('tbody tr');
updateObj = [];

$tableTr.each(function(index, element){
var $row_id = $(this).data("rowid");
// console.log("ID in Table: " + $row_id);
var status = $(this).find('#status option:selected').val();
// console.log("ID "+$row_id+" in der Table hat den Status: "+status);
var ma_name = $(this).find('#ma-name').val();
// console.log(ma_name);
var datum = $(this).find('#datum').val();
// console.log(datum);
var firmenname1 = $(this).find('#firmenname1').val();
// console.log(firmenname1);
var firmenname2 = $(this).find('#firmenname2').val();
// console.log(firmenname2);
var limit = $(this).find('#limit').val();
// console.log(limit);
var gruppe_kredit = $(this).find('#gruppe_kredit').val();
// console.log(gruppe_kredit);
var omv_kdnr = $(this).find('#omv_kdnr').val();
// console.log(omv_kdnr);
var sap_kdnr = $(this).find('#sap_kdnr').val();
// console.log(sap_kdnr);
var fos = $(this).find('#fos').val();
// console.log(fos);
var hga_kdnr = $(this).find('#fos').val();
// console.log(hga_kdnr);

var pushObj = {
row_id: $row_id,
status: status,
ma_name: ma_name,
datum: datum,
fa1: firmenname1,
fa2: firmenname2,
limit: limit,
gruppe_kredit: gruppe_kredit,
omv_kdnr: omv_kdnr,
sap_kdnr: sap_kdnr,
fos: fos,
hga_kdnr: hga_kdnr
};

updateObj.push(pushObj);
// PushObjekt mit Inhalt befüllen und das PushObjekt ins updateObjekt einbetten

//console.log(updateObj);
});
}

getAllContents();

3

Решение

Проблема в том, что вы пытаетесь отправить массив объектов JS. в этом случае нормально JSON.stringify(obj) не будет работать, так как на отдельных объектах нет ключей, поэтому объект не будет правильно закодирован в строку, поэтому на стороне сервера он не будет проанализирован должным образом и не будет передан $_POST, Одним из решений может быть

updateObj = [{"row_id":1,"status":"Anmeldung","ma_name":"AA","datum":"/","fa1":"testname1","fa2":"testname2","limit":"10.000","gruppe_kredit":"/","omv_kdnr":"8124213","sap_kdnr":"/","fos":"/","hga_kdnr":"/"},{"row_id":3,"status":"Anmeldung","ma_name":"AA","datum":"/","fa1":"ame1","fa2":"name2","limit":"12.000","gruppe_kredit":"/","omv_kdnr":"81515616","sap_kdnr":"/","fos":"/","hga_kdnr":"/"},{"row_id":2,"status":"Kunde","ma_name":"AA","datum":"/","fa1":"newname1","fa2":"newname2","limit":"15.323","gruppe_kredit":"/","omv_kdnr":"81515616","sap_kdnr":"/","fos":"/","hga_kdnr":"/"}];
// window.updateObj =
console.log(updateObj);
Obj = {};
$.each(updateObj,function(x,obj){ Obj[""+x] = obj;});
// updateObj = JSON.stringify(updateObj);
updateObj = JSON.stringify(Obj);
console.log(Obj);

$.ajax({
url: "//localhost:80/test/",
type: "POST",
data: updateObj,
success: function(response){
console.log("Success: ", response);
},
error: function(response){
console.log("Error: ", response);
}
});

————————Обновить———————-

Вы также можете сделать это следующим образом, но, думаю, будет немного сложно декодировать данные на сервере.

updateObj = [{"row_id":1,"status":"Anmeldung","ma_name":"AA","datum":"/","fa1":"testname1","fa2":"testname2","limit":"10.000","gruppe_kredit":"/","omv_kdnr":"8124213","sap_kdnr":"/","fos":"/","hga_kdnr":"/"},{"row_id":3,"status":"Anmeldung","ma_name":"AA","datum":"/","fa1":"ame1","fa2":"name2","limit":"12.000","gruppe_kredit":"/","omv_kdnr":"81515616","sap_kdnr":"/","fos":"/","hga_kdnr":"/"},{"row_id":2,"status":"Kunde","ma_name":"AA","datum":"/","fa1":"newname1","fa2":"newname2","limit":"15.323","gruppe_kredit":"/","omv_kdnr":"81515616","sap_kdnr":"/","fos":"/","hga_kdnr":"/"}];
console.log(updateObj);
Obj = {};
Obj["updateObj"] = updateObj;
updateObj = JSON.stringify(Obj);
$.ajax({
url: "//localhost:80/test/",
type: "POST",
data: updateObj,
success: function(response){
console.log("Success: ", response);
},
error: function(response){
console.log("Error: ", response);
}
});

———-update2.0

updateObj = [{"row_id":1,"status":"Anmeldung","ma_name":"AA","datum":"/","fa1":"testname1","fa2":"testname2","limit":"10.000","gruppe_kredit":"/","omv_kdnr":"8124213","sap_kdnr":"/","fos":"/","hga_kdnr":"/"},{"row_id":3,"status":"Anmeldung","ma_name":"AA","datum":"/","fa1":"ame1","fa2":"name2","limit":"12.000","gruppe_kredit":"/","omv_kdnr":"81515616","sap_kdnr":"/","fos":"/","hga_kdnr":"/"},{"row_id":2,"status":"Kunde","ma_name":"AA","datum":"/","fa1":"newname1","fa2":"newname2","limit":"15.323","gruppe_kredit":"/","omv_kdnr":"81515616","sap_kdnr":"/","fos":"/","hga_kdnr":"/"}];
// window.updateObj =
console.log(updateObj);
Obj = {};


var Obj = updateObj.reduce(function(o, v, i) {
o[i] = v;
return o;
}, {});
updateObj = JSON.stringify(Obj);
console.log(Obj);

$.ajax({
url: "//localhost:80/test/",
type: "POST",
data: updateObj,
success: function(response){
console.log("Success: ", response);
},
error: function(response){
console.log("Error: ", response);
}
});
2

Другие решения

Попробуй это-
на аяксе

   $.ajax({
url: "test.php",
type: "POST",
dataType: "json",
data: updateObj,
success: function(response){
console.log("Success: ", response);
},
error: function(response){
console.log("Error: ", response);
}

На Php

<?php
echo json_encode($_POST,true);
?>
0

Попробуйте с параметром json, если хотите получить ответ в формате json [Редактировать]

save.addEventListener("click", function(e){
e.preventDefault();
getAllContents();
console.log(updateObj);

updateObj = JSON.stringify(updateObj);
console.log(updateObj);

$.ajax({
url: "test.php",
type: "POST",
dataType: "json",
data: ({data:updateObj}),
success: function(response){
console.log("Success: ", response);
},
error: function(response){
console.log("Error: ", response);
}
});
});

и на стороне сервера

parse_str ($ _ POST [ ‘данные’], $ данных);
echo json_encode ($ data); выход;

0
По вопросам рекламы [email protected]