我有一个表单用于编辑信息并在提交后更新我的数据库。我希望我的页面在更改后刷新我的HTML视图。以下是我的代码:
$('#modal').on 'submit', '#form', (e) ->
user_id = this.dataset.userid
$.ajax
type: 'GET'
url: '/api/users/' + user_id
success: (data, textStatus, jqXHR) ->
listTemplate = HandlebarsTemplates['lists/list'](data)
$('#panel').html("")
$('#panel').append(listTemplate)
但是,我收到的AJAX数据是旧数据。当我刷新页面时,它会呈现新数据但却违背了AJAX的目的。如何在提交表单后刷新页面?
答案 0 :(得分:1)
您的控制器是否正确,我的意思是本地链接" / api / users / userid" ? 您是否仔细检查了控制器的输出?你的reloadlink和Ajax URL是一样的吗? 您的帖子中存在语法错误。您正在将用户标识传递给Controller,它应该返回当前数据集。如果你的reloadlink和Ajax请求中的目标URL不一样,那么你的Controller中肯定有问题。
更新:对于这样的事情,你可以在jquery中使用html表单的元素serialize()函数。可以在How can I get form data with JavaScript/jQuery?
下找到更多内容<!-- remove the action and method attribut, you don't need that any more-->
<form id="ajaxsubmit">
<input name="changeme" type="text">
<input type="submit" value="save">
</form>
在JS / JQuery代码段
中$('#ajaxsubmit').submit(function(event) {
// what every this is for
var user_id = this.dataset.userid
var additionalparams = $('#ajaxsubmit').serialize();
// serialize produces: "changeme=xx&foo=xxx"
$.ajax({
type: 'GET',
url: 'myhost/newrailscontroller',
data: 'user_id=' + user_id +'&' + additionalparams,
success: function(data, textStatus, jqXHR){
// do what ever you want here
listTemplate = HandlebarsTemplates['lists/list'](data);
$('#panel').html("");
$('#panel').append(listTemplate);
}
});
});
现在你只需要构建一个新的railscontroller名称&#34; newrailscontroller&#34;使用所有传递的参数处理ajax get请求。并使用来自ajax请求的params更新数据库,最后调用db JSON App将感兴趣的数据als JSON返回给你的ajax调用。小心你的成功调用ajax,json show用JSON.stringify()或Jquery.parseJSON()解析。有关详情,请参阅serialize : deserialize data structure to/from JSON
因为我几乎用所有语言编程,但只有红宝石才编程。很抱歉,我无法举例说明如何为您的案例制作railscontroller。祝你好运。