使用ajax PHP将json数据保存到json文件

时间:2015-07-15 07:23:46

标签: javascript php jquery json post

我的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 个答案:

答案 0 :(得分:0)

一些问题。

file_get_contents("php://input");为什么?您已经发送了包含数据的帖子,无需使用流来复杂化。

同样file_put_contents需要磁盘上实际文件的路径,而不是URL!

来自您的AJAX请求的

data: {stringData: stringData}表示您可以使用$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's Shiny Server,那么这对PHP不起作用

在任何情况下,您的端点都应该在调用时返回一些内容。不只是保存文件。这只是一种很好的做法。

header("HTTP/1.1 200 OK");