0

コントローラーから JSON 文字列を取得しています。

    public ActionResult Highlight()
    {
        var statesHighlight =
            db.Jobs
                .Select(r => r.Location);
        return Json(statesHighlight , JsonRequestBehavior.AllowGet);
    }

次のようなAjaxリクエストを介して取得しています:

    $.ajax({
    async: false,
    url: '@Url.Action("Highlight", "Jobs1")',
    data: JSON.stringify(),
    type: 'POST',
    success: function (data) {
        citydata = data;
    }
});

問題は、これが私の文字列の形式を維持していないことです。コントローラー アクションを呼び出すと、正しくフォーマットされた JSON であることが示されますが、Ajax リクエストから出力されると、そうではありません。ここでは、コントローラから直接です:

["HDQ","HDQ","EVA","HDQ","HDQ","HDQ","EVA","SVF","SVF","SVF","SVF","DFC","DCF","Feedlot","DCF","DCF","DCC","AGNW","AGNW"]

プラグインに渡す前に、これが変数に設定された値であることを確認する方法はありますか?

私が使用しているプラ​​グインは ImageMapster と呼ばれます。現在、JSON をハードコーディングしており、意図したとおりに動作します。

var data = $.parseJSON($('#map-data').text());
var cities = $.parseJSON($('#city-data').text());


$('img').mapster({
    mapKey: 'state',
    clickNavigate: true,
    isSelectable: false,
    highlight: false,
    onConfigured: function () {

        // make the array into a comma-sparated list
        var state_list = data.join(',');
        var city_list = cities.join(',');

        // the 'set' activates the areas
        $('img').mapster('set', true, state_list, options = { fillColor: '638EA5' });
        $('img').mapster('set', true, city_list, options = { fillColor: 'ffffff' });
    }
});
4

2 に答える 2

0

私は答えを得るために完全に間違った場所を探していました。フォーマットは問題ありませんでした。私が最初に使用していた変数のフォーマットを詳しく調べたときに、これを発見しました。結局のところ、私は物事を必要以上に複雑にしていました。私の漸進的なステップの1つをバイパスすることは、正しい解決策になりました。これが私の最終的なコードです:

 //retrieve JSON strings from controller
var citydata = {};
$.ajax({
    async: false,
    url: '@Url.Action("Highlight", "Jobs1")',
    method: 'GET',
    success: function (data) {
        citydata = data;
    }
});

var statedata = {};
$.ajax({
    async: false,
    url: '@Url.Action("HighlightState", "Jobs1")',
    method: 'GET',
    success: function (data) {
        statedata = data;
    }
});

//imagemapster to generate map behaviors
$('img').mapster({
    mapKey: 'state',
    clickNavigate: true,
    isSelectable: false,
    highlight: false,
    onConfigured: function () {

        // make the array into a comma-sparated list
        var state_list = statedata.join(',');
        var city_list = citydata.join(',');

        // the 'set' activates the areas
        $('img').mapster('set', true, state_list, options = { fillColor: '638EA5' });
        $('img').mapster('set', true, city_list, options = { fillColor: 'ffffff' });
    }
});
于 2015-05-13T15:45:03.313 に答える