我已经通过AJAX制作了一个在特定事件(点击事件)中调用的路径。 我的路线被调用但页面未通过调用呈现。
我的AJAX功能:
function showProfile(user_id) {
console.log("show pro:" + user_id);
$.ajax({
url: "/users/profile?id=" + user_id,
type: "GET",
success: function (data) {
}
});
}
我的路线:
router.get('/profile',middleware.ensureAuthenticated, function (req, res) {
console.log(req.query.id);
res.render('profile');
});
我正在进行AJAX调用的代码
$.ajax({
type: "GET",
url: "/users/friendSearch/" + q,
success: function (data) {
console.log("here");
//data = JSON.parse(data);
var output = "";
data.forEach(function (t) {
output += '<div class="card three wide column" ' +
'onclick=showProfile(' + t.oAuth_id + ')>' +
'<div class="image">' +
'<img src="/assets/matthew.png">' +
'</div>' +
'<div class="content">' +
'<div class="header">' + t.firstName + " " + t.lastName + '</div>' +
'</div>' +
'<div class="extra content">' +
'<div class="ui button" onclick=addFriend('+t.oAuth_id+') ' +
'id="follow">' +
'Follow' +
'</div>' +
'</div>' +
'</div>'
});
document.getElementById("user_placeholder").innerHTML = output;
}
});
我正在动态创建HTML代码,并在div中添加了一个onclick方法
我可以打印通过AJAX调用发送的id,但我的EJS页面没有加载 感谢
更新: 我的回复是304;
答案 0 :(得分:0)
我认为这是通过AJAX调用res.render()
路由的一个问题,因为它只返回HTML字符串(正如您在开发人员工具中的响应预览中看到的那样 - &gt;网络 - &gt;响应预览) ,而不是做任何其他事情。所以,我建议在概念中使用这样的东西:
function showProfile(user_id) {
console.log("show pro:" + user_id);
$.ajax({
url: "/users/profile?id=" + user_id,
type: "GET",
success: function (data) {
document.getElementById("userprofile").innerHTML = data
}
});
}
...为了将/profile
路由响应的HTML数据呈现到
<div id="userprofile"></div>
或者,您可以采用不同的方法,使用res.json()
代替返回数据并手动将其输出到HTML。
回答与您类似的问题:Express.js res.render not redirecting, just displayed in console
答案 1 :(得分:0)
这是一个漂亮的答案:
<p onclick="your_function(event.target)">
<!-- Your stuff here -->
</p>
实现代码中的任何链接应该非常容易。