2014-09-30 19 views
0

所以我有一個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();"> 
+0

在「Tutuwa路演」鏈接上的jsfiddle中有一個'data-bind'屬性。你使用MVC HTML助手類嗎?你確定你有HTML助手使用的JavaScript文件的所有引用嗎? – Dmitry 2014-09-30 11:24:22

回答

0

它看起來像您這樣的一個錯誤的URL的調用。我認爲這是一個.NET MVC應用程序?在.NET MVC中,您不會在URL中輸入Controller這個詞。該URL應該是Home/SaveVisitorHits

+0

哦好吧謝謝..我會改變這一點..但代碼沒有達到那裏,因爲onclick函數似乎沒有連接的功能.. – LeloKunene 2014-09-30 11:08:29

相關問題