使用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");