Отправить JSON-файл из jQuery на PHP без AJAX

Итак, я новичок в javascript / jquery, но я достаточно долго играл с PHP. Я знаю, как получить данные из ввода с помощью PHP, что очень просто, но когда вы пытаетесь сделать то же самое с jQuery, как это сделать, просто пролетает над моей головой.

Прямо сейчас у меня есть этот скрипт:

<script type="text/javascript"> function onSubmit( form ){ var data = JSON.stringify( $(form).serializeArray() ); console.log( data ); } </script> 

И эта форма:

 <form onsubmit='return onSubmit(this)'> <input type="date"/><br/> <input type="date"/><br/> <input type="submit" name=""/> </form> 

Я вижу, что он отлично записывает файл .json ( [{"name":"from","value":"1994-01-01"},{"name":"to","value":"1994-02-02"}] ). Я предполагаю, что это в значительной степени отправляет .json в .php-файл, а затем делает $ _POST, но я не знаю, как исходить отсюда или делать это. Я не знаю, нужен ли ajax или нет, а если нет, как это сделать без него (все, что я нашел здесь, использует ajax).

Вы можете отправить данные формы в виде текстовой строки в стандартную кодировку с кодировкой URL или как JSON как строку с jQuery.serialize() .

 <form id="set-date-form"> <input name="from" type="date"/><br/> <input name="to" type="date"/><br/> <input type="submit" id="set-date"/> </form> 

с jQuery

 <script> $('#set-date').on('click', function (e) { e.preventDefault(); var data = $('#set-date-form').serialize(); $.post('somephpfile.php', data, function (response) { // response is the data echoed from php var result = JSON.parse(response) // assuming that php echoed ['success' => true/false]; if (result.success == true) { alert("the values were sent to db successfully"); }else { alert("the values were not sent to db successfully"); } }) }) </script> 

Затем в вашем файле PHP

 <?php $from = $_POST['from']; $to = $_POST['to']; // here you can update the database with this values // after updating db or insert // check if the query was successful // if query was successful [echo json_encode(['success' => true]);] this value will be sent to javascript as a response // if query was not successful [echo json_encode(['success' => false]);] this value will be sent to javascript as a response 

PHP обрабатывается на стороне сервера.

Если вы хотите отправить данные на «PHP», вам нужно запросить сервер (либо через Ajax, если вы не хотите менять текущую страницу или вызывать новый URL с данными).

Я знаю, как получить данные из ввода с PHP

Это довольно неверный оператор, поскольку PHP не может получить данные от ввода, так как это серверная сторона. Браузер отправляет данные на PHP, вызывая сервер.

Вместо этого определите маршрут для размещения ваших входных данных в вашем php-файле, а затем через форму вы можете просто method = 'POST' вместо использования ajax для отправки ваших данных.

Вы также можете использовать XML-HTTP-запрос.

Вот пример.

 var http = new XMLHttpRequest(); var url = "get_data.php"; var params = "lorem=ipsum&name=binny"; http.open("POST", url, true); //Send the proper header information along with the request http.setRequestHeader("Content-type ", "application/x-www-form-urlencoded"); http.onreadystatechange = function() {//Call a function when the state changes. if(http.readyState == 4 && http.status == 200) { alert(http.responseText); } } http.send(params); 

Это взято из ответа здесь.

Отправить данные POST с помощью XMLHttpRequest