使用骨干.save方法尝试在php文件中提取json数据

时间:2012-12-24 23:27:45

标签: php ajax backbone.js

我在我的应用程序中使用骨干,我正在尝试使用骨干方法更新json文件.save方法 这是网站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);
}
});

这是我的sample.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));
 ?>

当我尝试回显超级全局帖子时,我得到数组(0)

我希望有人可以帮我解决我的php以及为什么我无法在sample.php中提取任何帖子数据当我在骨干网中使用.save方法时 - 当我回应出服务器请求方法时它指出我的帖子只是想抓住帖子数据并将其写入文件然后返回它我是以错误的方式进行此操作 - 任何帮助都表示赞赏 - 我一直在绞尽脑汁。我的第一步是弄清楚为什么我无法获得任何发布数据,即使firebug告诉我它在我加载页面时发布 - 你也可以查看

1 个答案:

答案 0 :(得分:1)

您的问题的答案在于,除非您发布表单编码数据,否则$_POST超全局不会被PHP填充。你需要获得原始的发布输入。你可以这样做:

$json_data = json_decode(file_get_contents('php://input'));

您实际上可以使用此处的各种PHP文件输入方法(即fopen / freadfile(在此上下文中无用)等)。但是,如果您不打算处理大量的JSON输入,那么上述内容可能是最容易的,因为内存管理变得更加重要。