сохранение данных json в файл json с использованием ajax PHP

0

Мой json файл выглядит следующим образом:

count_click.json

[
  {
    "link": "google.com",
    "count": 2  
  },
  {
    "link": "yahoo.com",
    "count": 3
  }
]

теперь я открываю этот файл, используя

$.getJSON('count_click.json',function(data){

    // do something with data

   var stringData = JSON.stringify(data);

    $.ajax({
    type: 'POST',
    contentType: 'application/json; charset=utf-8',
    url: 'http://127.0.0.x:3xx9/update.php',
    data: {stringData: stringData},
    success : function(d){
       alert('done');}            
    })

}) // end of getJSON function 

update.php

<?php
$a = file_get_contents("php://input");
file_put_contents('http://127.0.0.x:3xx9/count_click.json', json_encode($a));
?>

Я получаю ошибку в консоли браузера:

POST http://127.0.0.x:3xx9/update.php 404 (Not Found)

Но файл есть. Когда я перехожу к этому http://127.0.0.x:3xx9/update.php в браузере, я вижу, что содержимое php отлично отлично.

  • 1
    Как вы можете отправить запрос http в файл json?
  • 0
    Я новичок в этой вещи HTTP-запросов. Подскажите, как я могу сохранить данные объекта json в файл json.
Показать ещё 4 комментария
Теги:
post

2 ответа

0

Несколько проблем.

file_get_contents("php://input"); Почему? Вы уже отправляете сообщение с данными, не нужно усложнять процесс потоком.

Также file_put_contents нужен путь к фактическому файлу на диске, а не к URL!

data: {stringData: stringData} из вашего запроса AJAX означает, что вы можете получить доступ к нему на своем сервере с помощью $data = $_POST['stringData'];.

Просто повторите что-нибудь, чтобы увидеть, действительно ли вы что-то получаете.

echo json_encode( array("Payload" => $_POST['stringData']) );

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

Наведите свой браузер на http://127.0.0.x:3xx9/update.php и на свой сервер, просто

echo "Request received!";

Если вы видите, что в вашем браузере ваша конечная точка работает, и вы можете продолжить поиск и устранение неисправностей. Если вы этого не сделаете, это будет за пределами JS и PHP и, вероятно, связано с настройками вашего сервера. Если вы используете RStudio Shiny Server, то это не работает для PHP

В любом случае ваша конечная точка всегда должна возвращать что-то при вызове. Не просто сохранить файл. Это просто хорошая практика.

header("HTTP/1.1 200 OK");

0

Вы можете отредактировать свой PHP:

<?php
    $a = $_POST['stringData'];
    // you should check $a consists valid json - what you want it to be
    file_put_contents('count_click.json', $a);

Вы действительно должны проверить, что опубликованные данные действительны и не сохраняют что-то нежелательное. Также вы можете проверить, действительно ли запрос POST$_SERVER['REQUEST_METHOD'].

Возможно, вы найдете некоторые другие способы повышения безопасности (например, разрешить только запись из собственного домена...).

  • 0
    О, я скучаю по последней части вопроса, I see the contents of the php . Вы установили php?
  • 0
    Я работаю на блестящем сервере. @copynpaste
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню