Я хочу отправить массив JavaScript в файл PHP.
Это то, что я получил:
var mydata = []; console.log(document.getElementsByTagName("input")[0].name); for (var i = 0; i < document.getElementsByTagName('input').length; i++) { mydata[document.getElementsByTagName("input")[i].name] = document.getElementsByTagName("input")[i].value; }; for (var i = 0; i < document.getElementsByTagName('select').length; i++) { mydata[document.getElementsByTagName("select")[i].name] = document.getElementsByTagName("select")[i].value; }; console.log(mydata); $.ajax({ method: "POST", url: "q.php", data: {'lol': JSON.stringify(mydata)}, contentType: 'application/json', dataType: 'json' }) .done(function( msg ) { alert( "Data Saved: " + msg ); $('#debug').html(msg); });
Итак, как вы можете видеть, я создаю массив с петлей, в этот момент все в порядке. Проблема в том, что я пытаюсь отправить его через POST с помощью JSON. Я не знаю, является ли это лучшим методом …
Я пробовал без JSON.stringify(); но $_POST все еще пуст
Кажется, что сообщение не отправлено, но я вижу, что на консоли отправлен запрос на отправку XHR.
Попробуйте использовать этот код и увидеть изменения.
удалить contentType: 'application/json', dataType: 'json'
И измените var mydata = [] в var mydata = {}
ваш аякс должен выглядеть так
$ .ajax ({
метод: «POST»,
url: "q.php",
данные: {'lol': mydata}
})
.done (function (msg) {
alert («Сохраненные данные:» + msg);
. $ ( '# Отладки') HTML (MSG);
});
Вам не нужно стягивать свои mydata, потому что вы уже уменьшили его как объект.
Надеюсь, поможет