Jquery ajax долгое время ожидания
Я с помощью jQuery AJAX, чтобы вызвать веб-метод в моем разделе asp.net вот код:
$.ajax({ type: 'POST', url: 'Home.aspx/GetPlantInfo', contentType: 'application/json; charset=utf-8', dataType: 'json', success: function (response) { info= JSON.parse(response.d); $("#PlantName").val(info.Name); . . . }, failure: function (r) { alert(r.d); } });
webmethod выполняет простой запрос linq и сериализует результат в строку JSON, что занимает менее половины секунды. вот код webmethod:
[WebMethod] public static string GetPlantInfo() { MyDataClassesDataContext dc = new MyDataClassesDataContext(); Plant p = (from x in dc.Plants where x.Name == "someName" select x).FirstOrDefault(); string plantJson = JsonConvert.SerializeObject(p); return plantJson; }
однако вызов ajax занимает 10-15 секунд. Я проверил время ajax, и, по-видимому, большая часть этого времени-это время "ожидания", с незначительным временем отправки и получения. Я погуглил эту проблему без блокировки. Я спрашиваю, что это за время "ожидания"? Это проблема с сервером IIS? что-то не так с моим кодом?
Что я уже пробовал:
я пробовал комментировать код c#, чтобы он возвращал пустую строку, но все равно есть время ожидания (хотя на этот раз оно меньше: 5~6 секунд).
Richard Deeming
Я бы начал с удаления двойной кодировки/декодирования JSON и обертывания вашего контекстного класса в using
блок:
[WebMethod] public static Plant GetPlantInfo() { using (var dc = new CMMS_MyDataClassesDataContext()) { return dc.Plants.FirstOrDefault(x => x.Name == "someName"); } }
success: function(response){ var info = response.d; $("#PlantName").val(info.Name); ... },