AJAX在提交后接收未更新的数据

时间:2014-04-26 20:28:35

标签: jquery ajax form-submit

我有一个表单用于编辑信息并在提交后更新我的数据库。我希望我的页面在更改后刷新我的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的目的。如何在提交表单后刷新页面?

1 个答案:

答案 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。祝你好运。