2017-02-25 61 views
0

我开发了一个插件架构应用程序。每次添加插件时,都会使用jquery将链接添加到主MVC应用程序,该脚本从插件(DLL)中的js文件动态加载,并且该链接将成为新模块的入口点,脚本已成功将链接添加到剃须刀页面,但是当我点击链接时不起作用。asp.net mvc和jquery加载页面

这是代码。

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; 
      } 
     }); 
    }); 
}); 

回答

1

看起来像是在动态注入新的链接元素(a标记)到DOM。在这种情况下,您需要在将元素注入到DOM 或使用jquery on方法注册事件处理程序(可在DOM渲染后动态注入)来注册事件处理程序,该事件处理程序可与当前和将来的未来一起使用。

$(function(){ 

    $(document).on("click","#aLink",function (e) { 
     e.preventDefault(); 
     alert("Going to make ajax call now"); 
     //your code to make ajax call 
    }); 

}); 

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

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

}); 

这是一个工作示例。 http://jsbin.com/zuciwoloba/edit?html,js,output

我也有点和你的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); 
}); 
+0

查看答案中的更新。 – Shyju

+0

是的,谢谢你,我看到它,我正在获取成功消息,但没有被重定向到页面。响应的状态是200,但是我没有被重定向到页面。 – Haytham

+0

如果你想重定向,你可以这样做'window.location.href =“yourNewUrl”;'。但是如果你想重定向,ajax调用的重点是什么?你可以做一个正常的表单提交并从服务器返回一个RedirectToActionResult。 – Shyju

0

介绍你需要事件监听器绑定创建DOM后的元素新引进的元素 - 请做这样的事情......(你错过了通过event

$(document).on('click',"#aLink",function (event) { 

代替的$("#aLink").click(function() {

+1

谢谢你的回复我修改了你和Shyju建议的代码,现在警报出现,意味着事件被解雇了,但是对服务器的调用不起作用,我没有得到我想要的页面, jquery代码?? – Haytham

+0

这是不同的问题...... @Shyju值得+1,因为他帮助你消除了代码中的主要缺陷。 –