2016-03-24 99 views
0

显示在同一页面的结果我有node.js的快递网络应用,点击一个按钮执行CRUD操作。这里我需要根据用户的输入更新记录。为此,我需要输入用户的详细信息,在同一页面显示记录的现有值,并提示用户是否要更改数据。node.js的玉石 - 做一个POST请求,没有重定向

如果是的话,那么我需要输入值,从用户和更新。是否有可能在一个单一的玉文件中,我从用户获得输入值。

玉文件:

extends ../layout 

block content 
    .page-header 
    h3 Updation 

    form.form-horizontal(role='form', method='POST') 
    h4 Enter the employee id for which you want to update the details 
    input(type='hidden', name='_csrf', value=_csrf) 

    .form-group 
     label(class='col-sm-2 control-label', for='empid') Emp ID 
     .col-sm-2 
     input.form-control(type='text', name='empid', id='empid', autofocus=true) 
    .form-group 
     .col-sm-offset-2.col-sm-2 
     button.btn.btn-primary(type='submit') 
      i.fa.fa-pencil 
      | Get details 

我有这个文件,其中我收到来自用户的员工ID,使POST请求。我不确定如何将响应呈现给同一页面本身并提示更改详细信息。

任何帮助,将不胜感激。

回答

0

是的,你可以这样做,但不与被提交表单,因为那样的话你的网页已不复存在。

相反,你可以插入一个按钮到您的网页,做一个AJAX请求到后台,并在AJAX请求的回报,你可以动态地返回的数据替换你的页面的某些部分。当然,您可以包含用户输入到AJAX请求中的任何数据。

既然你想这一切都在发生前端,你不能在玉做到这一点。相反,您需要在您的页面中添加一个脚本,以便在客户端的浏览器中执行所需的操作。

下面是如何实现这样一个例子:

在一个名为ajax.jade文件将这个:

mixin ajaxFunction 
    script. 
    function changeState(url, buttonid) { 
     $.ajax({url: url}).done(function (data) { 
     $('#' + buttonid).parent().html(data); 
     }); 
    } 

mixin ajaxButton(id, url, buttonLabel) 
    a.btn.btn-primary.btn-xs.btn-block(id='#{id}', 
     href='javascript:changeState(\'#{url}\', \'#{id}\')') #{buttonLabel} 

现在你可以把这个混入你的页面上的任何地方。 (确保按钮ID在整个页面中是唯一的,并且不包含空格!)。点击之后,它会与后端返回任何替代本身:

include ajax 

+ajaxButton("myButton", "/some/url", "Klick me!") 
+0

我会尝试你提到的方式。同时,如果你有相同的示例代码,你可以发布吗? – Kirthika

+0

谢谢妮可。对不起,迟到了。我一定会检查一下:) – Kirthika

0

不知道是否有一种方法是,玉egine可以部分地呈现玉模板,如果没有做到这一点的一种方式,通常可以使用Ajax来做到这一点。 表单添加提交事件监听器,您可以在其中设置event.preventDefaut()来停止默认提交过程,这样可以防止页面重新加载。