ЛЮБОЙ результат действия, который возвращает данные Json в ответ на запрос get, должен иметь:
JsonRequestBehavior.AllowGet
В ответном заявлении. Это сделано специально для реализации MS, чтобы предотвратить атаки, связанные с Json, путем публикации ложных данных через результат действия.
так в вашем случае:
return Json(subCat,JsonRequestBehavior.AllowGet);
Решит вашу проблему.
Кстати, еще одна причина, которая может вызвать это, - это если вы не возвращаете правильный тип MIME, но, как правило, это применимо только в том случае, если ваша рука кодирует обработчики результатов вместо использования MVC.
Под этим я подразумеваю, что если, скажем, вы настроены на возврат HTML (а сервер возвращает «Content-type: text / html»), то ваш Ajax-запрос на поиск Json будет молча терпеть неудачу, если только вы установите тип ответа "application / json"