2014-10-02 63 views
0

我有一个网站,可以添加评论,这些评论只是临时存储,当您重新加载页面评论消失。我使用knockout和javascript将评论数据保存在ObservAbleArrayList中。我的一个想法是将这个ObservAbleArrayList发送到我的服务器,存储它,然后当页面重新加载时,存储的数组列表将首先更新注释字段。我怎么能用AJAX和PHP来做到这一点?使用PHP和AJAX存储和访问服务器上的数据

这里是我的意见javascriptcode:

function Comment() { 
    var self = this; 

    self.nickname = ko.observable(); 
    self.newMsg = ko.observable(""); 
    self.editable = ko.observable(false); 

    self.addComment = function() { 
     vm.comments.push(self); 
     vm.selectedComment(new Comment()); 
    }; 

    self.deleteComment = function() { 
     vm.comments.remove(self); 
    }; 

    self.editComment = function() { 
     self.editable(!self.editable()); 
    }; 
} 

function ViewModel() { 
    var self = this; 
    self.comments = ko.observableArray(); 
    self.selectedComment = ko.observable(new Comment()); 
} 

var vm = new ViewModel(); 
ko.applyBindings(vm); 
}); 

任何帮助或例子将是非常有益的!提前致谢。

回答

0

将数据作为JSON发送到服务器使用jQuery作为您的桥梁来处理服务器端与它的包装器$.ajax()包装。

首先,您需要将数据变为一个JSON对象,以便发送并轻松解析。在淘汰赛中,你可以使用一个ko对象的.toJSON(model)方法来得到它的JSON的解释,如:

var jsonData = ko.toJSON(ViewModel); 

,这将给你的JSON字符串。这是准备好传递给服务器,所以现在你可以构建你的PHP脚本的$.ajax()调用。

$.ajax({ 
    url: '/path/to/my/script.ext', 
    type: 'GET', //default anyway, provided for clarity 
    dataType: 'json', //the returned data from the server will be automatically parsed as json 
    data: jsonData, //the KO model we converted earlier 
    success: function(data){ 
     //the server's response is in "data" above, jsonParsed already. 
    } 
}); 
+0

感谢您的回答!但要发送我的jsonData,我将不得不使用类型为'POST'的ajax函数? 是否这样? self.sendEntry =函数(){ $就({ 类型: “POST”, URL: “storage.php”, 数据:jsonData }); }; 然后再次检索我可以使用你的GET方法? – 2014-10-02 09:31:58

+0

@Scatman_John你可以使用'POST'或'GET',这没关系。它更多的是关于“语义上”正确的。你是否将数据发布到服务器?或者,您是否将数据发送到服务器以产生响应?如果前者是'type','POST','如果后者',则输入:'GET'。请记住,在PHP中,唯一的变化是'$ _POST',而不是'$ _GET' – Ohgodwhy 2014-10-02 09:33:40

+0

是的,我只是想将数据发布到服务器,然后如果用户刷新页面,所有旧的评论仍然会那里。所以我猜想当提交评论时,我将使用POST,并在pageref上运行一个GET函数。 – 2014-10-02 09:39:40

相关问题