2017-11-11 8 views
0

私のサイトにはリンクがあります。クリックすると、mongooseクエリーを実行する関数が呼び出されます。 私はそのクエリの結果を、ページをリロードせずに変数の同じページに送ることを望みます。それ、どうやったら出来るの?今すぐ新しいクエリー結果データでページを再表示しています。クリックしてリロードせずにmongooseクエリから変数に変数を送信

// List comments for specified chapter id. 
commentController.list = function (req, res) { 
    var chapterId = req.params.chapterId; 
    var query = { chapterId: chapterId }; 
    Chapter.find({ _id: chapterId }).then(function (chapter) { 
    var chapter = chapter; 
    Comment.find(query).then(function (data) { 
    console.log(chapter); 


    Chapter.find().then(function(chapters){ 
     return res.render({'chapterlinks', commentList: data, user: req.user, chapterq: chapter, chapters:chapters }); 

    }) 

}); 

}) };

https://www.w3schools.com/xml/ajax_intro.asp

これは、あなたのクライアントのためのコード(ブラウザ)ではなく、サーバーのコード(nodejs)で次のようになります。あなただけのAJAXを経由して、ブラウザからその要求をする必要があり

答えて

1

UPDATE:

ここで物事を簡単にするためにjQueryのを使用する簡単な例、です:

(1)AJAXリクエストを実行し、処理する関数を作成

function getChapterLinks(chapterId) { 
    $.ajax({ 
     url: "/chapterLinks/"+chapterId, 
    }).done(function(data) { 
     //here you should do something with data 
     console.log(data); 
    }); 
} 

(2)その機能をDOM要素のクリックイベントにバインド

$("a#chapterLinks1").click(function() { 
    getChapterLinks(1); 
}); 

(3)DOM要素は、あなたがこのa#chapterLinks1要素がクリックされたときに

<a id="chapterLinks1">Get ChapterLinks 1</a> 

は今、それが/chaptersLink/1の応答を取得するためにAJAXを使用するHTML内のどこかにあることを確認してくださいページをリロードせずにサーバーから削除します。


参照:

http://api.jquery.com/jquery.ajax/

http://api.jquery.com/jquery.click/

+0

これが唯一の答えのリンクです。必要に応じて、あなたがリンクしているものを使って、適切で完全な回答を作成してください。リンクが死んでしまい、あなたの答えが役に立たなくなります。 https://stackoverflow.com/help/how-to-answer – Rob

+0

このリンクは質問に答えるかもしれませんが、ここでは回答の重要な部分を含めて参考にしてください。リンクされたページが変更された場合、リンクのみの回答は無効になります。 - [レビューから](レビュー/低品質の投稿/ 17914517) –

+0

「Use ajax」にちょうど答えて、その内容をコピーして貼り付け、リンクを省いてください。 – bitstrider

関連する問題