2014-12-06 67 views
0

任何人都可以指向正確的方向嗎?運行C#方法的jQuery

我想通過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#:

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; 
     } 
    } 
} 

如果我運行這個jQuery而不是它工作得很好,但在 '延時' 的首都文字的變化(我必須雙擊一個區域)。

$(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 2014-12-06 17:52:24

+0

我的意思是你需要在JS更新CapitalCity.text(Capital)的第一組JS中應用我的修復。 – Morbia 2014-12-06 18:06:24

+0

是的,我明白了。還是一樣的錯誤。請參閱udpated代碼(第一部分)。 – Brian 2014-12-06 18:13:24