2016-03-24 30 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()來停止默認提交過程,這樣可以防止頁面重新加載。