2017-11-16 1 views
0

2 개의 버튼과 6 개의 텍스트 상자가있는 MVC 프로젝트가 있습니다. 허브에 다른 메소드를 호출하고 싶습니다.JS Client가 SignalR 허브의 메소드를 호출하지 않습니다.

클라이언트 : I 누를 경우

$(document).ready(function() { 
      var bitcoinHub = $.connection.bitcoinHub; 

      $("#btnBuy").click(function() { 
       var tl = document.getElementById("bitcoinBuy").value; 
       var btc = document.getElementById("aBitcoin").value; 
       var total = document.getElementById("aTotal").value; 
       bitcoinHub.server.trade("buy",@Model.user,tl,btc,total); 
      }); 

      bitcoinHub.client.broadcastSell = function (model) { 
       // $("#sellGrid").append("<li>"+model.Sell+"</li>"); 
      }; 

      $("#btnSell").click(function() { 
       var tl = document.getElementById("bitcoinSell").value; 
       var btc = document.getElementById("sBitcoin").value; 
       var total = document.getElementById("sTotal").value; 
       bitcoinHub.server.trade("sell",@Model.user,tl,btc,total); 
      }); 

      bitcoinHub.client.broadcastPurchase = function (model) { 
       // $("#buyGrid").append("<li>"+model.Buy+"</li>"); 
      }; 
      $.connection.hub.start(); }); 

"btnBuy"또는 "btnCell"는 서로 다른 매개 변수를 사용하여 서버의 무역 메도를 호출해야합니다.

서버 :

BitcoinHub (이름) 등급 방법 I 누를 경우

public void trade(string parametre, Users cUser, string tl, string btc, string total) 
    { 
     switch (parametre) 
     { 
      case "sell": 
       // Do something not important here 
       break; 
      case "buy": 
       // Do something not important here 
       break; 
     } 
    } 

는 "btnBuy는"또는 "btnCell는"그것은 clickeventhandler 물마루 간다. 문제는 허브의 메소드가 호출되지 않는다는 것입니다.

+0

지난 섹션을 이해할 수 없습니다. 그것이 더 명확하다는 것을 다시 쓸 수 있습니까? – Tester

+0

나는 MVC 형식입니다. 버튼마다 2 개의 버튼과 3 개의 텍스트 박스가 있습니다. 첫 번째 버튼을 누르면 3 개의 텍스트 상자 값을 받아 서버 측 트레이드 방식으로 보내고 데이터베이스에 데이터를 삽입 할 수 있습니다. 문제 : 버튼을 누르면. Js의 .click 이벤트가 모두 함께 작동합니다. 중단 점 코드로 작업 할 때 첫 번째 .click 코드 블록을 호출하고 다른 버튼의 .click 함수로 점프합니다. 기타 : 하지만이 서버 측의 거래 방법이 호출되지 않습니다. –

+0

html을 추가 할 수도 있습니까? – Tester

답변

1

@ Model.user처럼 JS에서 모델을 사용할 수 없습니다. 자세한 내용은 Accessing MVC's model property from Javascript을 참조하십시오.

추가 코드를 재정렬하십시오. 연결이 설정 될 때까지 서버에서 메소드를 호출하지 마십시오.

$(document).ready(function() { 
       var bitcoinHub = $.connection.bitcoinHub;   

       bitcoinHub.client.broadcastSell = function (model) { 
        // $("#sellGrid").append("<li>"+model.Sell+"</li>"); 
       }; 

       bitcoinHub.client.broadcastPurchase = function (model) { 
        // $("#buyGrid").append("<li>"+model.Buy+"</li>"); 
       }; 
       $.connection.hub.start().done(function(){ 
        // DO not call methods on server until connection is established. 
        $("#btnBuy").click(function() { 
         var tl = document.getElementById("bitcoinBuy").value; 
         var btc = document.getElementById("aBitcoin").value; 
         var total = document.getElementById("aTotal").value; 
         bitcoinHub.server.trade("buy",@Model.user,tl,btc,total); 
        }); 
        $("#btnSell").click(function() { 
         var tl = document.getElementById("bitcoinSell").value; 
         var btc = document.getElementById("sBitcoin").value; 
         var total = document.getElementById("sTotal").value; 
         bitcoinHub.server.trade("sell",@Model.user,tl,btc,total); 
       }); 
    }); }); 
관련 문제