已更新文件以顯示如何使其正常工作。我在下面接受的答案並沒有顯示太多的代碼,一切都以評論結束。所以爲了簡單起見,我在這裏展示了正確的代碼(我的原始代碼有3個錯誤)。jquery無法正確更新車把局部視圖(express,node.js)
我用Express和Handlebars使用Node.JS。我在更新特定的div以及發送數據時遇到了麻煩。這是有效的。
在我的視圖目錄中有:index.handlebars,view1.handlebars,temp.handlebars。
裏面view1.handlebars,我有一個button
:
<button type="button" id="btn-here" data-id="{{data.uniqueId}}"><a href="../update_this">Update This</a></button>
和div
:
<div id="sectional">
{{> partial}}
</div>
當有人點擊button
,我要更新的截面div
。所以使用jQuery像這樣:
$('#btn-here').on('click', function(event) {
event.preventDefault();
var id_num = $(this).data('id'); //id_num is correct
$.get("/temp/" + id_num, function(res) {
var updated_html = res;
$('#sectional').html(updated_html);
});
});
我允許了jQuery找出通過temp.handlebars文件:
router.get('/temp/:id', view1.showstuff);
而且view1.showstuff函數內部:
showstuff: function(req, res) {
res.locals.model = model;
res.render('temp/' + id, {layout: false});
};
這現在沿着視圖數據發送並僅更新jquery調用中指定的視圖。
感謝您對下方用戶的幫助!
如果您在瀏覽器中訪問「http:// yoursite.com/temp.html」,會發生什麼情況?你只是得到'temp.html'或整個'index.html'內容的內容? – GregL
那麼,因爲我用express(&handlebars)使用Node.JS,所以我得到錯誤消息,說瀏覽器不能「GET /temp.html」。我沒有將它作爲我的routes.js文件中的路線。 – lynvie
當您請求'temp.html'時,Chrome devtools的Network標籤會返回什麼結果? 'temp.html'是你期望得到的實際文件嗎?如果是這樣,您將需要配置路由以允許您通過某個URL獲取它。 – GregL