2013-06-28 4 views
1
$(document).ready(function() { 
    $.ajax({ 
     url: 'LeadPipes/LeadCounts', 
     type: 'POST', 
     contentType: 'application/json', 
     async: false, 
     success: function (data) { 
      alert(data) 

     } 
    }); 
}); 

Я использую вызов ajax выше, чтобы получить модель обратно, как бы я использовал объект модели в функции успеха. Как и в случае, мне нужно иметь возможность использовать данные, подобные модели вида, например @ model.Type позволяет говорить. как я мог сделать это с данными json в успехе?Использование данных модели в успехе ajax

ответ

2

Объект data содержит свойства, переданные через сервер.

Вы можете получить доступ к ним, как:

var name = data.Name; 
var testData = data.TestData; 

Ваш Action может выглядеть следующим образом:

public JsonResult LeadCounts() 
{ 
    return Json(new { name = "Darren", testData = "Testing" }); 
} 
+0

ну, а данные возвращают модель, содержащую другие модели. Это проблема. его не то, что я помещаю в json, нет способа сделать это, если я специально не установил (new {name = "Darren"}) –

+0

Вы можете углубиться в модели. Таким образом, вы можете использовать точечный аксессуар, чтобы идти так глубоко, как вам нужно. Посмотрите мой пример с автомобилем: http://jsfiddle.net/ttaCp/ –

+0

@CoreyToolis вы можете, конечно, просто вызвать 'return Json (myComplexObject);' Это был просто пример анонимного объекта @Darren, используемый для объяснения – mckeejm

2

В MVC3 вы могли бы сделать это следующим образом:

public ActionResult LeadCounts() 
{ 
    var data = new { Count = 1, Something = "Something" }; 

    return Json(data, JsonRequestBehavior.AllowGet); 
} 

В связи с:

$(document).ready(function() { 
    $.ajax({ 
     url: 'LeadPipes/LeadCounts', 
     type: 'POST', 
     contentType: 'application/json', 
     async: false, 
     success: function (data) { 
      alert(data.Count); 
     } 
    }); 
}); 
+1

Обратите внимание, что я явно разрешая запросы 'GET' (с помощью' sonRequestBehavior.AllowGet'). Это не нужно в этом случае, поскольку вы используете запрос «POST». – Zbigniew