2017-02-25 109 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,因爲他幫助你消除了代碼中的主要缺陷。 –