2014-09-30 3 views
0

저는 MVC의 초보자입니다. 그래서 이것은 잘 모르는 경우 사과드립니다. 내 MVC 응용 프로그램에서 페이지를 클릭하거나 액세스 할 때마다 추적하려고합니다. 내 전략은 자바 스크립트 함수에 매개 변수를 전달하여 특정 페이지에 대한 집보기에서 클릭이 발생할 때마다 데이터베이스에 기록하는 것입니다. 자바 스크립트 함수는 cs 파일과 통신하는 webmethod를 호출합니다.list에서 javascript로 매개 변수를 전달하는 방법

현재 나의 주요 문제는 홈 페이지의 클릭에서 javascript 함수로 데이터를 전달할 수 없다는 것입니다. 매우 이상한 이유로 인해 함수와의 통신을 거부합니다. onClick과 data-bind라는 두 가지 메소드를 사용해 보았습니다. (두 전략 모두 아래 코드에서 보여졌습니다) 작동하지 않습니다. 어떤 충고?

<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="PostName('Home')">Home</a></li> 
       <li class=""><a href="#tutuwaroadshow" data-toggle="tab" data-bind="click: function (o, e){$root.PostName(o,e);}" >Tutuwa roadshows</a></li> 
       <li class=""><a href="#faqsandpresentations" data-toggle="tab" onclick="PostName('Faqs')">FAQ's and presentations</a></li> 
       <li class=""><a href="#examplescenarios" data-toggle="tab" onclick="PostName('ExampleScenarios')">Example scenarios</a></li> 
       <li class=""><a href="#financialadvisors" data-toggle="tab" onclick="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="PostName('TrustDeeds')">Trust deeds</a></li> 
       <li class=""><a href="#newsflashes" data-toggle="tab" onclick="PostName('Newsflashes')">Newsflashes</a></li> 
       <li class=""><a href="#usefullinksandcontacts" data-toggle="tab" onclick="PostName('Useful')">Useful links and contacts</a></li> 
       <li class=""><a href="#webinar" data-toggle="tab" onclick="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> 

그리고 자바 스크립트 :

<script type="text/javascript"> 

function PostName(pageName) { 
      debugger;  

$.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> 

답변

1

당신은 당신이 당신의 HTML에서 사용하기 전에 함수를 정의해야하고, 당신이 onclick="javascript:PostName('name')"를 작성해야합니다.

그러나 더 나은 방법은 데이터 속성에 이름을 설정하고 jQuery를 사용하여 클릭 핸들러를 연결하는 것입니다. 이미 AJAX 호출에이 이름을 사용하고 있기 때문입니다.

+0

감사합니다. "javascript : PostName ('name')"을 입력했습니다. 그리고 그것의 아직도 동일, 그것 doesnt는 js를 도달한다. 별도의 파일에 Javascript를 설치해야합니까? HTML에서 사용하기 전에 함수를 정의함으로써 의미를 설명하십시오. – LeloKunene

+0

예를 들어 기능 정의를 머리로 옮기면 작동합니다. http://jsfiddle.net/cLp6y51c/을 참조하십시오. – Tetaxa

관련 문제