使用backbone .save方法试图从PHP文件中提取json数据


using backbone .save method trying to extract json data in a php file

我在应用程序中使用骨干,我试图使用骨干方法.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输入,那么上述方法可能是最简单的,因为内存管理变得更加重要。