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

我的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

  

我在浏览器控制台中收到错误:

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

但文件就在那里。 当我在浏览器中访问http://127.0.0.x:3xx9 / update.php时,我看到php的内容很好。

你可以编辑你的PHP:

  

你真的应该检查发布的数据是否有效,而不是保存不需要的东西。 你也可以检查请求是否真的是POST - > $_SERVER['REQUEST_METHOD']

也许您找到了一些其他方法来提高安全性(例如,只允许从自己的域发布...)。

一些问题。

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

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

data: {stringData: stringData}来自您的AJAX请求的data: {stringData: stringData}意味着您可以使用$data = $_POST['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的Shiny Server ,那么这对PHP不起作用

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

header("HTTP/1.1 200 OK");