2014-12-06 2 views
0

누구나 올바른 방향으로 나를 가리킬 수 있습니까?jQuery C# 메서드 실행

Javascript/jQuery를 통해 C# 메서드에서 출력을 얻으려고합니다.

반환되는 출력은 자본 도시를 반환해야 할 때 [object Object]입니다.

jQuery를 (jqvmaps 사용하는 도구) :

$(document).ready(function() { 



    var Capital = null; 

    jQuery('#vmap').vectorMap(
{ 

    map: 'world_en', 
    backgroundColor: '#a5bfdd', 
    borderColor: 'white', 
    borderOpacity: 0.25, 
    borderWidth: 1, 
    color: 'gray', 
    enableZoom: true, 
    hoverColor: 'orange', 
    hoverOpacity: null, 
    normalizeFunction: 'linear', 
    scaleColors: ['#b6d6ff', '#005ace'], 
    selectedColor: 'red', 
    selectedRegion: null, 
    showTooltip: true, 
    onRegionClick: function (element, code, region) { 

     var codeValue = $('#Code').text(); 
     var countryCode = $('#Code').text(); 

     var data = null; 
     data = { CountryCode: codeValue.toUpperCase() } 


     console.log(data); 


     $.ajax({ 
      type: "POST", 
      url: 'Default.aspx/GetCapital', 
      data: JSON.stringify(data), 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function (code) { 

       Capital = code.d; 

       CapitalCity.text(Capital); 

      } 
     }); 

     var ISOCode = $('#Code'); 

     ISOCode.text(code); 

     var Country = $('#Country'); 

     Country.text(region); 


     var CapitalCity = $('#Capital'); 




    } 
}); 



    }); 

C 번호 :이 jQuery를 실행하면

using System; 
using System.Collections.Generic; 
using System.Web.UI; 
using Newtonsoft.Json; 
using System.IO; 
using System.Web.Services; 
using System.Web.Script.Services; 

namespace WorldMapDetails 
{ 
    public partial class _Default : Page 
    { 



     protected void Page_Load(object sender, EventArgs e) 
     { 

      if (!IsPostBack) 
      { 

      } 
     } 

     [WebMethod] 
     [ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
     public static string GetCapital(string CountryCode) 
     { 
      //do your stuff 
      Country Country = new Country(); 

      List<Country> selectedCountry = JsonConvert.DeserializeObject<List<Country>>(File.ReadAllText(@"C:\Users\Brian\Documents\Bloxinations\Bloxinations\WorldMapInfo\WorldMapDetails\Scripts\json\Countries.json")); 

      String Capital = null; 

      foreach (Country c in selectedCountry) 
      { 
       if (c.cca2 == CountryCode) 
       { 
        Capital = c.capital.ToString().ToUpper(); 
       } 
      } 

      return Capital; 
     } 
    } 
} 

대신 그냥 잘 작동하지만 수도 인 텍스트의 변화가 '연기'한다 (나는 지역을 두 번 클릭해야한다).

$(document).ready(function() { 

    var Capital = $('#Capital'); 

    jQuery('#vmap').vectorMap(
    { 

     map: 'world_en', 
     backgroundColor: '#a5bfdd', 
     borderColor: 'white', 
     borderOpacity: 0.25, 
     borderWidth: 1, 
     color: 'gray', 
     enableZoom: true, 
     hoverColor: 'orange', 
     hoverOpacity: null, 
     normalizeFunction: 'linear', 
     scaleColors: ['#b6d6ff', '#005ace'], 
     selectedColor: 'red', 
     selectedRegion: null, 
     showTooltip: true, 
     onRegionClick: function (element, code, region) 
     { 

      var codeValue = $('#Code').text(); 
      var countryCode = $('#Code').text(); 
      var data = { CountryCode:codeValue.toUpperCase() } 

      var ISOCode = $('#Code'); 

      ISOCode.text(code); 

      var Country = $('#Country'); 

      Country.text(region); 



      $.ajax({ 
       type: "POST", 
       url: 'Default.aspx/GetCapital', 
       data: JSON.stringify(data), 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function (code) { 

        Capital.text(code.d); 
        //console.log(data); 
        console.log(code); 

       } 
      }); 

     } 



    }); 


}); 

어떻게하면 즉시 업데이트 할 수 있습니까? (두 번 클릭 할 필요없이)

답변

0

ajax 결과를 Capital 변수에 할당하는 문제를 다음과 같이 수정했습니다.

$(document).ready(function() { 

    var Capital = null; 

    jQuery('#vmap').vectorMap(
{ 

    map: 'world_en', 
    backgroundColor: '#a5bfdd', 
    borderColor: 'white', 
    borderOpacity: 0.25, 
    borderWidth: 1, 
    color: 'gray', 
    enableZoom: true, 
    hoverColor: 'orange', 
    hoverOpacity: null, 
    normalizeFunction: 'linear', 
    scaleColors: ['#b6d6ff', '#005ace'], 
    selectedColor: 'red', 
    selectedRegion: null, 
    showTooltip: true, 
    onRegionClick: function (element, code, region) { 

     var codeValue = $('#Code').text(); 
     var countryCode = $('#Code').text(); 

     var data = null; 
     data = { CountryCode: codeValue.toUpperCase() } 

     console.log(data); 
     var Capital = null; 

     $.ajax({ 
      type: "POST", 
      url: 'Default.aspx/GetCapital', 
      data: JSON.stringify(data), 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function (code) { 
       Capital = code; 
       $('#Capital').text(Capital); 
      } 
     }); 

     var ISOCode = $('#Code'); 

     ISOCode.text(code); 

     var Country = $('#Country'); 

     Country.text(region); 
    } 
}); 



    }); 
+0

여전히 같은 문제입니다. 더블 클릭해야합니다. – Brian

+0

당신이 CapitalCity.text (Capital)를 업데이트하고 있던 JS의 첫 번째 세트에서 제 수정 사항을 적용해야한다는 말입니다. – Morbia

+0

예, 이해했습니다. 여전히 같은 오류. udpated 코드 (첫 번째 부분)를 참조하십시오. – Brian