从AJAX调用URL时,我的页面无法呈现

时间:2017-12-03 10:17:00

标签: javascript node.js ajax express ejs

我已经通过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;

2 个答案:

答案 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>

实现代码中的任何链接应该非常容易。