net mvc和jquery加载页面

net mvc和jquery加载页面,jquery,asp.net-mvc,Jquery,Asp.net Mvc,我开发了一个插件架构应用程序。每次添加插件时,都会使用jquery将链接添加到主MVC应用程序中,脚本会从插件(DLL)中的js文件动态加载,该链接将成为新模块的入口点,脚本会成功地将链接添加到razor页面,但当我单击链接时,它不起作用 这是代码 Ps:我不太擅长javascript,所以如果我在代码中犯了一个愚蠢的错误并且找不到解决方案,请原谅我 $(document).ready(function () { $("#myLinkDiv").append('<a id="aL

我开发了一个插件架构应用程序。每次添加插件时,都会使用jquery将链接添加到主MVC应用程序中,脚本会从插件(DLL)中的js文件动态加载,该链接将成为新模块的入口点,脚本会成功地将链接添加到razor页面,但当我单击链接时,它不起作用

这是代码

Ps:我不太擅长javascript,所以如果我在代码中犯了一个愚蠢的错误并且找不到解决方案,请原谅我

$(document).ready(function () {

    $("#myLinkDiv").append('<a id="aLink" href="#">ClickMe</a>');

    $("#aLink").click(function () {
        event.preventDefault();
        $.ajax({
            url: '/Candidate/CreateCandidate/',
            type: 'GET',
            success: function (data) {
                return data;
            }
        });
    });
});
$(文档).ready(函数(){
$(“#myLinkDiv”)。追加(“”);
$(“#aLink”)。单击(函数(){
event.preventDefault();
$.ajax({
url:“/Candidate/CreateCandidate/”,
键入:“GET”,
成功:功能(数据){
返回数据;
}
});
});
});

看起来您正在将新的链接元素(
a
标记)动态注入DOM。在这种情况下,您需要在将元素注入DOM后注册click事件,或者使用jquery方法注册事件处理程序,该事件处理程序可用于当前和未来的DOM元素(在呈现DOM后动态注入)

缩小注册事件处理程序的jQuery选择器的范围可能是一个好主意。例如,如果您知道要将链接添加到id“myLinkDiv”,则可以将jQuery选择器替换为该id

$("#myLinkDiv").on("click","#aLink",function (e) {

});
这是一个工作样本

我对您的ajax代码也有点困惑。在成功处理程序中,您有一个返回语句,这是没有意义的。通常,当ajax调用成功时,您希望更新DOM/向用户显示消息

$.ajax({
    url: '/Candidate/CreateCandidate/',
    type: 'GET'
}).done(function(res){
    alert("Success.Check browser console for server response");
    console.log(res);
}).fail(function(){
    alert("Failed.Check browser network tab for server response");
    console.log(res);
});

要在创建DOM后引入元素,需要将事件侦听器绑定到新引入的元素- 请像这样做。。。(您未通过
事件


而不是
$(“#aLink”)。单击(函数(){

感谢您的回复我按照您和Shyju的建议修改了代码,现在警报出现,这意味着事件被触发,但对服务器的调用不起作用,我没有得到我想要的页面,jquery代码中有一个错误。这是另一个问题…@Shyju应该得到+1,因为他帮助您删除了主f是的,谢谢,我看到了,我收到了成功消息,但没有重定向到页面。响应状态为200,但我没有重定向到页面。如果要重定向,可以执行此操作
window.location.href=“yourNewUrl”;
,但如果您试图重定向,ajax调用的意义是什么?您可以执行普通表单提交并从服务器返回重定向到操作结果。
$.ajax({
    url: '/Candidate/CreateCandidate/',
    type: 'GET'
}).done(function(res){
    alert("Success.Check browser console for server response");
    console.log(res);
}).fail(function(){
    alert("Failed.Check browser network tab for server response");
    console.log(res);
});
$(document).on('click',"#aLink",function (event) {