Отправка POST-данных с использованием XMLHttpRequest

я новичок в 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).

 Newwt26 апр. 2017 г., 15:39
@julekgwa Да. Решение было вvar results = JSON.parse(data); а затем с помощьюresults[i].probeTemp в петле. Я просто плохо это реализовывал.
 Newwt26 апр. 2017 г., 15:40
@julekgwa Да, и$postVars = $request->getParsedBody(); а также$var = $request->getAttribute('var');
 julekgwa26 апр. 2017 г., 15:35
Вы смогли решить эту проблему?

Ответы на вопрос(4)

Вы также можете использовать 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

PHP лечится на стороне сервера.

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

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

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

 Newwt12 апр. 2017 г., 12:03
Хм ... Я думал о запуске функции в файле php, когда я "отправляю" файл .json, поэтому страница не перенаправляет меня. Не думал об этом. Думаю, мне все-таки придется попасть в 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-файле, а затем через форму вы можете просто использовать method = 'POST' вместо использования ajax для отправки ваших данных.

 Newwt12 апр. 2017 г., 12:02
Понимаю.$_POST['data'] должно работать нормально, тогда?
 Ozan12 апр. 2017 г., 12:06
Я использую Express.JS для определения маршрутов для публикации данных, но я предполагаю, что у вас есть ваши маршруты в вашем php-файле, а также подключены к вашей базе данных, поэтому я предполагаю, что если у вас есть соединение на вашем бэкэнде, данные получат размещено через метод.

Ваш ответ на вопрос