Запись в файл JSON с использованием ajax и php.Сервер не получает POST - PullRequest
0 голосов
/ 01 октября 2018

Я попытался выполнить действия, описанные в нескольких других вопросах о стековом потоке, но по какой-то причине мой сервер не показывает никаких индикаторов получения запроса.Я знаю, что клиент отправляет запрос, поскольку он обнаруживается в отладчике Firefox.Вот метод js:

function writeToFile(dat) {
    $.ajax({
        url     : 'dataSaveAjax.php',
        method  : 'post',
        data    : { 'data': JSON.stringify(dat) },
        success : function( response ) {
            alert( response);
          }
    });
}

PHP-код:

<?php
    $fp = fopen('general.json', 'w');
    fwrite($fp, json_encode($_POST['data']));
    fclose($fp);
?>

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

сначала нужно понять, в чем причина и почему наш скрипт не работает.Сначала давайте посмотрим на серверную часть (php).Во-первых, поместите данные в переменную, вместо $ _POST ['data'] попробуйте сделать что-то вроде:

<?php
    $fp = fopen('general.json', 'w');
    fwrite($fp, 'MyTest');
    fclose($fp);
?>

Если это не работает, скорее всего, причина в том, что вам нужно установитьразрешения на запись для файла ( Chmod ).

Если все записано правильно, значит, что-то не так с клиентской частью вашего сайта.Когда дело касается запросов POST / GET, я обычно использую Почтальон .Это позволяет не только тестировать запросы, но и генерировать код.Если вы выполняете запрос через Postman и результат записывается в файл, то ошибка в javascript однозначна.Попробуйте нажать F12 в браузере и перейти на консоль js, там вы увидите сообщение об ошибке.Используете ли вы jQuery в примере, и это связано?Это связано, прежде чем пытаться выполнить скрипт?Попробуйте посмотреть на данные, которые вы пытаетесь отправить с помощью консоли (F12)

console.log(JSON.stringify(dat));

Собираются ли ваши данные на самом деле или вы пытаетесь отправить пустые данные в файл?

0 голосов
/ 01 октября 2018

Попробуйте обновить свой код следующим образом

<?php
$fp = fopen('general.json', 'w');
$writtingResponse = fwrite($fp, $_POST['data']);
fclose($fp);
echo $writtingResponse;

?>

Вы не написали ни одного ответа и дважды кодируете json.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...