使用 PHP 保存 ajax POST 数据
Saving ajax POST data with PHP
我一直在尝试使用ajax和php将一些数据保存到.json文件中。目前我收到错误,我的数据没有被保存,无法找出原因。
这是我.js文件:
var data = {
"test": "helloworld"
}
$.ajax({
url: "save.php",
data: data,
dataType: 'json',
type: 'POST',
success: function (data) {
$("#saved").text("Data has been saved.");},
error: function (data){
$("#saved").text("Failed to save data !");}
});
这是我的 php 文件:
$json = $_POST['data'];
if(json_decode($json) != null){
$file = fopen('web/js/data_save.json', 'w+');
fwrite($file, json_encode($json));
fclose($file);
}else{
print("<pre>Error saving data !</pre>");
}
当我尝试保存ajax错误时,被触发:
error: function (data){
$("#saved").text("Failed to save data !");
}
我希望有人能引导我朝着正确的方向前进:)
这对我来说很好用
。.js:
$(document).ready(function() {
var json_object = {"data": "helloworld"};
$.ajax({
url: "../tests/save.php",
data: json_object,
dataType: 'json',
type: 'POST',
success: function(json_object) {
console.log(json_object);
$("#saved").text("Data has been saved.");
},
error: function(json_object) {
console.log(json_object);
$("#saved").text("Failed to save data !");
}
});
});
。.php
$post_data = $_POST['data'];
if (!empty($post_data)) {
$file = fopen('data_save.json', 'w+');
fwrite($file, json_encode($post_data));
fclose($file);
echo json_encode('success');
}
如果你对 $_POST 执行var_dump,你会看到你的变量在 PHP 中作为数组发送。 此外,您还需要回显 JSON 字符串以使回调成功
您的请求中没有任何密钥data
。您需要使用http_get_request_body
或其他东西将整个请求正文解析为 JSON 以获取原始正文,以便获得所需的结果。
编辑:似乎有一些混乱,这里有一些进一步的解释。
向 PHP 发送 JSON POST 请求时,不能像使用普通请求那样使用 $_POST
变量。
curl -H 'Content-Type: application/json' -d '{"foo": "bar"}' myhost/foo.php
使用 FOO.php定义为 波纹管将打印一个空数组,如果需要,请自行尝试。
<?php
print_r($_POST);
当您需要从 POST 请求的正文中获取 JSON 时,您需要获取所有正文,然后从 JSON 中解析它。您可以通过多种方式执行此操作,其中一种是我在编辑之前写的。您还可以通过以下方式获得整个身体而无需使用任何扩展
file_get_contents('php://input')
结果应该是相同的。
因此,使用下面的代码,您应该得到您想要的。
<?php
$json = json_decode(file_get_contents('php://input'), true);
print_r($json);
相关文章:
- 下载使用POST数据动态生成的文件
- 如何从HTTP上下文对象中获取Post数据
- 可以't通过Angular$resource POST数据
- 如何在IE CORS中发送POST数据(使用XDomainRequest)
- Angular js,在选择元素上,我想 POST 数据以将其保存在数据库中,然后我想使用 PUT 更新它而无需重新加载
- 追加 POST 数据 javascript
- Angular 中的 HTTP 服务将 POST 数据作为请求正文的键发送,没有值
- 从chrome扩展创建一个包含POST数据的链接
- 如何使用AJAX打印PHP POST数据?(没有jQuery)
- Javascript POST数据进入GET PHP数组
- PHP没有从$.ajax获取POST数据
- 为什么cgi-POST数据被篡改和截断
- Ajax XML的POST数据值发生更改
- POST数据没有'不包含任何表单数据
- firebug:如何在firebug控制台中发送POST数据
- IE11不发送HTTP POST数据
- 使用POST数据引用jsfiddle.net
- 保存每个POST数据的Chrome扩展
- 如何将PHP Post数据获取到jquery ajax请求中
- 如何在选择Select Box值时将参数作为POST数据传递,这将重新加载同一页面