2017-02-22 8 views
-1

Я ищу, чтобы загрузить результат Json в переменную javascript. Итак, как я могу загрузить json result url или Controller action в переменную javascript.Как загрузить набор результатов json в переменную скрипта java

Я использовал javascript для автоматического указания значений в поле ввода.

Приведенный ниже код работает, когда я использую статические данные с переменной. Но когда я передаю действие url или Controller, он не работает.

Script

<script> 
$(function() { 
    var CorporateNameSearch = [ 
     "ActionScript", 
     "AppleScript", 
     "Asp", 
     "BASIC", 
     "C", 
     "C++",   
     "Java", 
     "JavaScript", 
     "Lisp", 
     "Perl", 
     "PHP", 
     "Python", 
     "Ruby",   
     "Scheme" 
    ]; 

    $("#tags").autocomplete({ 
     source: CorporateNameSearch 
    }); 
}); 

Просмотр страницы

<div class="form-group"> 
     <label class="col-sm-2 control-label" for="tags">Some value:</label>        
     <div class="col-sm-9">     
     <input type="text" id="tags" name="tags" class="form-control" /> 
     </div> 
    </div> 

Контроллер который возвращает JSON результат

public ActionResult JsonData() 
    { 
     int ProviderID = 100; 
     string ProfileUrl = "http://localhost:64423/api/CorporateName/CorporateDetails?pid=" + ProviderID + ""; 
     System.Net.Http.HttpClient DashBoardclient = new System.Net.Http.HttpClient(); 
     DashBoardclient.BaseAddress = new Uri(ProfileUrl); 
     DashBoardclient.DefaultRequestHeaders.Accept.Clear(); 
     DashBoardclient.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); 
     HttpResponseMessage dashboardresponseMessage = DashBoardclient.GetAsync(ProfileUrl).Result; 
     var DashboardData = dashboardresponseMessage.Content.ReadAsStringAsync().Result; 

     return Json(DashboardData, JsonRequestBehavior.AllowGet);    
    } 

Сценария Я пытался загрузить JSON результата

var myjson; 
    $.getJSON("http://localhost:49359/ConfirmVisit/JsonData", function (json) { 
    myjson = json; 
    }); 

    $("#tags").autocomplete({ 
     source: myjson 
    }); 

Итак, как я могу передать URL результата JSON или действий контроллера в переменный сценарии Java для работы авто предлагает в моей странице просмотра?

Любая помощь приветствуется. Заранее спасибо !!!

+0

Какова ценность 'DashboardData'? - он должен быть 'IEnumerable ' (и не печатать на жестком коде, который вы указали именно так - используйте 'var url = '@Url.Действие ("JsonData", "ConfirmVisit") '; ') –

+0

Значение DashboardData похоже на [{" GroupID ":" 7313 "," GroupName ":" HUA YANG BERHAD "}] @StephenMuecke – Muzz

+0

Это не соответствует тому, что вы вам необходимо отправить объект, который является 'IEnumerable ' –

ответ

0

Потому что вызов getJSON асинхронный!

С вашим текущим кодом он попытается сделать вызов ajax методу действия JsonData, но вы регистрируете функциональность автозаполнения с помощью переменной myjson. Что делать, если серверу требуется 10 секунд, чтобы вернуть ответ? Вы обновляете myjson в обратном вызове (когда ответ сервера), но вы уже вызвали (зарегистрировали) autocomplete с исходным значением переменной myjson!

При работе с вызовами ajax убедитесь, что вы используете ответ/данные из вызова ajax после того, как получили его с сервера. Большинство методов ajax имеют успешные методы обратного вызова, которые будут выполняться после получения ответа от вызова сервера.

Зарегистрируйте свой автозаполнение, когда вы получите результат от вызова ajax, внутри обратного вызова успеха.

$(function() { 

    $.getJSON("@Url.Action("JsonData")", function (json) { 
     $("#tags").autocomplete({ 
      source: json 
     }); 
    }); 

}) 
0

Использование myjson = JSON.parse(myjson).

Это преобразует текст JSON в объект javascript, который может использоваться в вашем js-коде.

+0

Nope ... его не работает @ Jersh ... все еще нет предложения авто в поле ввода – Muzz

Смежные вопросы