Inquiridor
Não consigo popular dropdown com Json

Discussão Geral
-
Bom dia!
Tenho uma tela que ao digitar um código, o dropDown deve ser populado com as tarefas cadastradas com aquele código. Chamar a controller com o id do código da certo, mas ao montar isso da um erro "POST http://localhost:11929/despesas/getTarefa 500 (Internal Server Error)"
Minha controller:
[HttpPost] public JsonResult getTarefa(string idObra) { int id = Convert.ToInt32(idObra); var tarefa = db.tarefaaplicacao.Where(x => x.IdObra == id).ToList(); List<tarefaaplicacao> lista = tarefa; return Json(new { ok = true, data = lista, message = "ok" }); }
Meu javascript
function loadTarefas() { alert("numero da obra: " + $("#numeroObra").val()); codigoObra = $("#numeroObra").val(); var urlemp = '@Url.Action("getTarefa")'; var select = $('#ddlTaref'); $.ajax({ type: "POST", url: urlemp, data: { idObra: codigoObra }, success: function (returndata) { if (returndata.ok) { window.alert("combo populado"); select.empty(); $.each(returndata.data, function (index, itemData) { select.append($('<option></option>').val(itemData.Id).html(itemdata.Nome)); }); select.show('slow'); } else { window.alert('error :' + returndata.message); } } }); }
Todas as Respostas
-
Se está ocorrendo erro 500 é porquê está ocorrendo algum erro dentro do seu método getTarefa, debuga linha por linha pra ver onde está acontecendo..
Provalvemente na linha
db.tarefaaplicacao.Where(x => x.IdObra == id).ToList();
http://www.linkedin.com/pub/murilo-kunze/44/191/455
-
Opa, obrigado por colaborar ^^
O problema é que no debug da certo, a variavel lista do tipo List<tarefaaplicacao> recebe o retorno de tarefa que contem os objetos que eu quero. Talvez o tipo de retorno que estou fazendo não pode ser iterado... mas ai não sei como proceder.
-
-
-
Descobri o problema "
Foi detectada uma referência circular ao serializar um objeto do tipo 'Sacer.Models.Obra'.
"
O problema é que apesar de ser um relacionamento de 0.1 -> N, o entity criou uma propriedade em cada tabela, qual q melhor forma de proceder?
-
-
Agora ta tudo certo, ja consigo retornar os objetos, mas da um erro falando que "Uncaught ReferenceError: itemdata is not defined". Vejo esse erro pelo firebug, meu metodo ajax segue:
function loadTarefas() { alert("numero da obra: " + $("#numeroObra").val()); codigoObra = $("#numeroObra").val(); var urlemp = '@Url.Action("getTarefa")'; var select = $('#ddlTaref'); $.ajax({ type: "POST", url: urlemp, data: { idObra: codigoObra }, success: function (returndata) { if (returndata.ok) { window.alert("combo populado"); select.empty(); $.each(returndata.data, function (index, itemData) { select.append($('<option></option>').val(itemData.Id).html(itemdata.Nome)); }); select.show('slow'); } else { window.alert('error :' + returndata.message); } } }); }
-
-
Exatamente, mas depois de corrigir isso, não da mais erro, só que também não preenche o select. E os objetos são retornados corretamente.
- Editado Kakashi963 segunda-feira, 29 de outubro de 2012 12:06
-
-
Cara deu muito certo, realmente obrigado.
- Editado Kakashi963 segunda-feira, 29 de outubro de 2012 13:15
-