Я хочу отправить массив 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, потому что вы уже уменьшили его как объект.
Надеюсь, поможет