我在应用程序中使用骨干,我试图使用骨干方法.save方法更新json文件这里是网站http://dalydd.com/projects/backbone/backbone.html
这是我的js,运行正常
var ModalInfo = Backbone.Model.extend({
defaults: {
person:'',
occupation:'',
home:'',
},
url:'sample.php',
});
var developer = new ModalInfo();
developer.toJSON();
developer.save({person:'madan', occupation:'developer', home:'middtown'}, {
wait:true,
success:function(model, response) {
console.log('Successfully saved!' + model + response);
},
error: function(model, error) {
console.log(model.toJSON());
console.log('error.responseText' +model);
}
});
这里是php在我的示例。php中我试图获取json。js的内容解码它附加我的新数据然后解码并作为响应返回
<?php
$json_data = json_decode(file_get_contents('json.js'), true);
for ($i = 0, $len = count($json_data); $i < $len; ++$i) {
//do the right logic
}
file_put_contents('json.js', json_encode($json_data));
$final_data = file_get_contents('json.js', json_encode($json_data));
echo $final_data;
echo(var_dump($_POST));
?>
当我尝试回显超级全局post时,我得到array(0)
我希望有人能帮助我与我的php,为什么我不能提取任何post数据在sample.php当我使用。save方法在骨干-当我echo出服务器请求方法它的状态后,我只是想抓住post数据并将其写入文件,然后返回它我去这个错误的方式-任何帮助是感激的-我一直在绞尽脑汁在这个。我的第一步就是弄清楚为什么我不能得到任何发布数据,即使firebug告诉我它是张贴当我加载页面-你也可以检查
您的问题的答案在于,除非您发布表单编码的数据,否则$_POST
超全局变量不会被PHP填充。您需要获得原始发布的输入。你可以这样做:
$json_data = json_decode(file_get_contents('php://input'));
您实际上可以在这里使用任何不同的PHP文件输入方法(即fopen
/fread
, file
(在此上下文中无用),等等)。但是,如果您不打算处理大量JSON输入,那么上述方法可能是最简单的,因为内存管理变得更加重要。