[英]saving json data to json file using ajax PHP
我的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的內容完全正常。
您可以編輯您的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']
。
也許您發現了其他提高安全性的方法(例如,僅允許來自自己域的帖子...)。
一些問題。
file_get_contents("php://input");
為什么? 您已經在發送包含數據的帖子,無需使流復雜化。
同樣, file_put_contents
需要磁盤上實際文件的路徑,而不是URL!
您的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");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.