2014-12-11 3 views
0

Похоже, что у меня есть небольшая ошибка в моем коде. Но я не могу найти его.Ajax Action call вызывает ошибку

Итак, я вызываю действие в своем контроллере из своей функции ajax.

var serviceURL = '/Vm/GetVMInformation'; 

$.ajax({ 
    type: "GET", 
    url: serviceURL, 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function (result) { 
     alert("This Works fine"); 
     $("#testDiv").html(result); // Display the partial View in this div 
    }, 
    error: function (XMLHttpRequest, textStatus, errorThrown) { 
     alert(errorThrown); 
    } 
}); 

My Action затем возвращает частичный вид и объект списка.

public ActionResult GetVMInformation() 
{ 
    List<VmInfo> VMListArray = new List<VmInfo>(); 
    ... Code ... 
    return PartialView("_List", VmList); 
} 

Действие вызывается и работает частичный просмотр. Я протестировал его. Итак, проблема в том, что моя функция ajax не прошла успешно. Поэтому он выдает ошибку. Когда я предупреждаю об ошибке, я просто получаю сообщение «Внутренняя ошибка сервера».

Кто-нибудь видит мою ошибку?

Примечание: Мой частичный вид. Не уверен, что если его важным

<!--This partial View is just for testing the ajax function--> 

@model IsolutionsAzureManager.Models.VmData 

<p>@Model.Name[0]</p> 

UPDATE:

Так что я изменил тип возвращаемого моей функции (которая в настоящее время имеет тип JsonResult) для Json

JavaScriptSerializer jss = new JavaScriptSerializer(); 

    string output = jss.Serialize(VmList); 
    Response.Write(output); 
    Response.Flush(); 
    Response.End(); 
    return Json("_List", output); 

Хорошая новость: Теперь вызов ajax будет успешным. Плохая новость: я до сих пор не могу показать свой частичный вид. Возвращаемое значение (результат) - это просто [объект, объект]

success: function (result) { 
     $("#testDiv").html(result); 
    }, 

ответ

0

Внутренняя ошибка сервера означает, что ваш сервер выдает исключение и ответ 500 http status. Вам нужно отладить GetVMInformation действие, чтобы увидеть причину.

+0

'GetVMInformation()', похоже, работает нормально. Я не получаю никаких объяснений – user2877820

1

Если у вас ошибка 500, в вашем приложении что-то не так.

Если вы получаете ошибку JS, возможно, это связано с тем, что ваш JS ожидает JSON взамен, но поскольку вы возвращаете частичное представление, возвращаемое содержимое является HTML. Действие вашего контроллера должно преобразовать ваш список в объект JSON, а тип возвращаемого действия должен быть JsonResult. Или вы измените ожидаемый тип результата в своем JS.

* Обновление

Вы видите "объект", потому что вы просто бросали вам JSON onject в HTML. Чтобы отобразить его правильно, вам нужно работать с объектом. Поскольку это сериализованный список, вам нужно перебирать его, чтобы что-то делать с каждой записью. Что-то вроде этого

for (var i = 0; i < result.length; i++) { 
    alert(result[i].name); 
} 

где «.name» будет некоторое поле из вашего VmInfo класса.

+0

Итак, я обновляю свой вопрос. По-прежнему возникает проблема при отображении частичного представления – user2877820

+0

. Я обновил свой ответ, чтобы отразить ваш прогресс. – svanelten

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