无法将数据发布到JSON

时间:2015-03-10 14:56:28

标签: javascript json angularjs

在开发AngularJS应用程序时遇到以下问题。

我正在尝试将一些数据发布到我有本地的JSON文件

当我尝试这样做时,我得到了:无法加载资源:net :: ERR_EMPTY_RESPONSE(17:52:25:265 |错误,网络)   在public_html / logins.json

这是一个发布的功能:

             $scope.sendOrder = function(shippingDetails){                 
             var order = angular.copy(shippingDetails);
             order.products = cart.getProducts();
             $http.post("orders.json",order)
                     .success(function(data){
                         $scope.data.orderId = data.id;
                         cart.getProducts().length =0;
                       })
                     .error(function(error){
                       $scope.data.orderError = error;  

                     })
                     .finally(function(){

                      $location.path("/complete");           
                     });

         };       

有什么不对?

1 个答案:

答案 0 :(得分:1)

JSON是一种用于以结构化格式存储数据的格式,而POST是一种HTTP协议,通常用于将数据发送到服务器。

要将数据保存到名为orders.json的文件中,您必须创建一个服务器端脚本,该脚本可以具有与您的文件系统交互的权限。客户端代码(如浏览器中的Javascript)无法执行此操作,因为它不会在服务器上运行。

这是一些未经测试的PHP代码,用于从$_POST['data']获取值并将其保存到orders.json。重要的是要注意,这将简单地将您的数据打到文件的末尾,并且不会保留结构。 高度建议使用数据库存储结构化数据,而不是发明自己的格式并为其编写API。

if($_POST['data'] && strlen($_POST['data']) > 0) {
    //This is super dangerous - saving user input directly to a file.
    //I'm not sure exactly what $_POST['data'] will contain for you, so please make sure it's sanitized before doing this
    file_put_contents("orders.json", $_POST['data'], FILE_APPEND | LOCK_EX);
}

然后用AJAX调用它:

$http.post('filesaver.php', order)
.success(function(data, status, headers, config) {
    //do stuff
})
.error(function(data, status, headers, config) {
    //do different stuff
});