2013-05-01 3 views
1

У меня есть это действие. Он вернет некоторый JSON.Возвращение JSON от метода действия

public JsonResult Get() 
{ 
     ... 

     return new JsonResult { Data = data }, JsonRequestBehavior = JsonRequestBehavior.AllowGet }; 
} 

Тогда у меня есть на виду тег скрипта, указывающий на метод действия Get.

<script type="text/javascript" src="@Url.Content("~/resource/get")"></script> 

Проблема заключается в том, что я не могу получить доступ к данным JSON в JS-коде. Кажется, что JSON нужно каким-то образом выполнить. Любое предложение ?

+0

Вы знаете, что можете просто пойти 'return Json (data);' right? :) –

+0

Я знаю, но вам все равно нужно установить JsonRequestBehavior. – user49126

+0

так почему бы не украсить метод атрибутом '[HttpGet]'? –

ответ

2

Вы можете просто вызвать действие в JQuery и затем обработать JSon непосредственно:

$.ajax({ 
    dataType: "json", 
    url: "/resource/get", 
    success: function(data){ 
     var obj = JSON.parse(data); 
    } 
}); 

Или сокращенный вариант:

$.getJSON('/resource/get', function(data) { 
    var obj = data; 
}); 
+0

Я знаю это, но мне просто интересно, есть ли другой способ? Может быть, помощник mvc html? – user49126

+1

Что не так с этим? Есть ли конкретная необходимость, которую вы пытаетесь решить? Не могли бы вы рассказать мне, почему вы хотите сделать это с помощью ссылки на скрипт вместо того, чтобы просто называть его через Ajax? – Kenneth

+0

Я просто хочу, чтобы объект JSON был готов как можно скорее. – user49126

1

Если вы хотите JSON доступный как можно скорее, без дополнительного запроса , включите его в начальную загрузку страницы:

<script type="text/javascript"> 
    var myJson = @Html.Action("Get"); 
</script> 

Теперь вы можете просто получить доступ к myJson переменная в вашем скрипте для доступа к вашим данным.

1

Если вы хотите, чтобы он был сброшен в ваш HTML-код во время создания страницы на сервере, вы можете добавить его в свою модель просмотра, а затем отобразить ее непосредственно на странице. Вот пример псевдокода:

<script type="javascript"> 
    var obj= JSON.parse('@Model.PropertyContainingJson'); 
</script> 
Смежные вопросы