所以我有一個mindboggler在我的手上拒絕彎曲。我的目標是每訪問一次頁面就登錄數據庫。我在c#端代碼上創建了這個信息,我知道它的工作原理。我現在想要做的事情比較直接;每次在主頁視圖列表上單擊一個項目(即一個頁面)時(它充當SPA的外殼並且不會改變),將頁面名稱發送到Javascript中的函數,然後將該函數傳遞給Web方法。問題是,當應用程序啓動時,因爲它是一個SPA,它收集所有的div(見下文)並呈現它們,出於某種原因,它不希望通信並將參數傳遞到javascript函數,無論我在哪裏把它(我已經把它放在一個頭上,我把它放在html之下等)。單獨測試時,onclick函數可以正常工作,但在此應用程序中,它拒絕工作。SPA應用程序視圖不能與JavaScript通信的可能原因
我也嘗試過使用'body onload =「PostName();」以及每個頁面上的window.onload來調用函數,但它也是一個空白。關於問題出在哪裏的一些想法?
<tr class="row">
<td>
<div class="tabbable">
<ul class="nav nav-tabs nav-stacked" id="menuTabs">
<li class="active"><a href="#land" data-toggle="tab" onclick="javascript:PostName('Home')">Home</a></li>
<li class=""><a href="#tutuwaroadshow" data-toggle="tab" onclick="javascript:PostName('Roadshows')">Tutuwa roadshows</a></li>
<li class=""><a href="#faqsandpresentations" data-toggle="tab" onclick="javascript:PostName('Faqs')">FAQ's and presentations</a></li>
<li class=""><a href="#examplescenarios" data-toggle="tab" onclick="javascript:PostName('ExampleScenarios')">Example scenarios</a></li>
<li class=""><a href="#financialadvisors" data-toggle="tab" onclick="javascript:PostName('FinancialAdvisors')">Financial advisors</a></li>
<!--<li class=""><a href="#privateclients" data-toggle="tab">Private Clients</a></li>-->
<li class=""><a href="#trustdeeds" data-toggle="tab" onclick="javascript:PostName('TrustDeeds')">Trust deeds</a></li>
<li class=""><a href="#newsflashes" data-toggle="tab" onclick="javascript:PostName('Newsflashes')">Newsflashes</a></li>
<li class=""><a href="#usefullinksandcontacts" data-toggle="tab" onclick="javascript:PostName('Useful')">Useful links and contacts</a></li>
<li class=""><a href="#webinar" data-toggle="tab" onclick="javascript:PostName('Webinar')">Webinar</a></li>
</ul>
</div>
<div class="newsflash"><a href="~/Content/files/Tutuwa%20Newsflash%204.pdf" target="_blank">Click here for the latest newsflash.</a></div>
</td>
<td rowspan="2">
<div class="tab-content">
<div class="tab-pane active" id="land">@Html.Partial("Land")</div>
<div class="tab-pane" id="tutuwaroadshow">@Html.Partial("TutuwaRoadshow")</div>
<div class="tab-pane" id="faqsandpresentations">@Html.Partial("FaqsAndPresentations")</div>
<div class="tab-pane" id="examplescenarios">@Html.Partial("ExampleScenarios")</div>
<div class="tab-pane" id="financialadvisors">@Html.Partial("FinancialAdvisors") </div>
<div class="tab-pane" id="privateclients">@Html.Partial("PrivateClients")</div>
<div class="tab-pane" id="trustdeeds">@Html.Partial("TrustDeeds")</div>
<div class="tab-pane" id="newsflashes">@Html.Partial("NewsFlashes")</div>
<div class="tab-pane" id="usefullinksandcontacts">@Html.Partial("UsefulLinksAndContacts")</div>
<div class="tab-pane" id="webinar">@Html.Partial("Webinar")</div>
</div>
</td>
</tr>
</table>
功能,目前坐在頭:
<head>
<script type="text/javascript">
function PostName(pageName) {
debugger;
//String PageName = "ExampleScenarios";
$.ajax({
type: "POST",
url: 'HomeController/SaveVisitorHits',
data: { s: pageName },
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
//do nothing
},
error: function (e) {
// do nothing
}
});
}
</script>
<title></title>
</head>
需要注意的是,當我單獨從應用程序的代碼,它工作正常(見http://jsfiddle.net/cLp6y51c/如由誰試圖給其他用戶創建幫助更早)。問題出在應用程序中,可能是某種我不知道的設置。
這是另一種方法,我在每一個頁面,但也並不工作的嘗試:
<header>
<img src="../../content/images/examplescenarios-header.jpg" style="height: 340px" />
<script type="text/javascript">
function PostName() {
debugger;
//String PageName = "ExampleScenarios";
$.ajax({
type: "POST",
url: 'HomeController/SaveVisitorHits',
data: { s: "ExampleScenarios" },
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
//do nothing
},
error: function (e) {
// do nothing
}
});
}
window.onload = PostName;
</script>
</header>
<body onload="PostName();">
在「Tutuwa路演」鏈接上的jsfiddle中有一個'data-bind'屬性。你使用MVC HTML助手類嗎?你確定你有HTML助手使用的JavaScript文件的所有引用嗎? – Dmitry 2014-09-30 11:24:22