【问题标题】:How to decide which function to call with JQuery and Ajax?如何决定使用 JQuery 和 Ajax 调用哪个函数?
【发布时间】:2018-08-23 22:22:48
【问题描述】:

我一直在开发单页应用程序,用户可以在其中运行不同的进程。这将涉及添加新记录、更新现有记录以及在某些情况下删除记录。我的问题是在前端处理此过程的最佳方法是什么?我试图监控Stack-overflow 的工作方式以及他们如何处理这种情况。如果他们使用不同的url 或者他们使用提交的表单数据来决定应该在后端运行哪个进程,我仍然可以说 100% 我理解。这是一个小例子:

<div class="row">
   <div class="form-group col-xs-12 col-sm-12 col-md-12 col-lg-12">
       <button type="button" name="new_record" id="new_record">New</button>
   </div>
</div>
<table>
   <thead>
      <tr>
         <th>Name</th>
         <th>Status</th>
         <th>Edit</th>
      </tr>
   </thead>
   <tbody>
      <tr>
        <td>New York</td>
        <td>Active</td>
        <td class="text-center">
           <button class="record_edit">Edit</button>
        </td>
      </tr>
   </tbody>
</table>

在上面的 HTML 中,您可以看到两个不同的按钮 NewEdit。出于测试目的,我只在表格中显示了一条记录。所以我想知道如何在 JQuery/JavaScript 和 Ajax 中处理这个问题。这是我的js代码示例:

$('#frmSave').on('submit', submitFrm);
function submitFrm(e){
    var formData = frmObject.serialize();

    $.ajax({
       type: 'POST',
       url: 'Components/Functions.cfc?method=saveData',
       data: formData,
       dataType: 'json'
    }).done(function(obj){
       if(obj.STATUS === 200){
           // Successfully saved.
       }else{
           // Error!   
       }  
    }).fail(function(jqXHR, textStatus, errorThrown){
       alert('Error: '+errorThrown);
    });
}

您可以看到我为 New 和 Edit 两种情况调用了一个函数。在后端,我有两个不同的过程。一个用于插入,另一个用于更新。基于从用户传递的参数,这些参数将在后端决定。我怎么知道我可以使用data-attributes 并将该值附加到我的formDataurl 名称并发送到服务器。有人会说不靠谱。我后端的代码会根据表单数据中提交的参数进行插入或更新。我想知道现在这种情况有什么好方法。如何以专业的方式处理?如果有人有一个很好的例子,请告诉我。还有一件事,在我看来,我想将这两个进程保持在后端的同一个函数中,以防止一些代码冗余。

【问题讨论】:

  • 我见过这种做法有多种方式。我看到其他人将他们的代码存储在数据库中并通过 ajax 调用它,并且我看到其他人基于该函数加载另一个 js 文件并将正文更改为该页面。也许您想采用更多 Angular 方法
  • id为frmSave的dom在哪里
  • @Tim 你能举例说明它应该是什么样子吗?
  • @brk 我没有为此目的发布我的整个表单 html。 frmSave 是表单 ID。
  • 我想说,这种方法还不错。如果你真的想让这个专业,你可以使用框架。

标签: javascript jquery ajax


【解决方案1】:

你可以做一些简单的事情

.done(function(obj){
       if(obj.STATUS === 200){
           // Successfully saved.
            $('#main').load("./newContent.cfm");
          }

所以在成功时,它会加载 newContent 页面。

【讨论】:

  • 在这种情况下,用户不会看到以前保存的数据。他们会得到全新的空白表格,对吗?
  • 你可以改变它并根据你的需要做不同的事情。这只是一个例子。因此您可以改用 .append() 并在 div 的末尾加载 newContent 。可能性是无穷无尽的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-25
  • 2011-12-21
  • 2015-05-08
  • 1970-01-01
  • 2011-05-08
  • 2011-01-17
相关资源
最近更新 更多