在AJAX异步请求结束之前更改页面

时间:2014-10-29 16:45:09

标签: ajax asp.net-mvc json

查看

$("#button").click(function () {
    $('#result').html("Processing...");
    $.ajax({
       url: '@Url.Action("GetData", "Json")',
       async: true,
       dataType: "json",
       type: "GET",
       success: function (data) {
           $('#result').html(data);
       },
    });
    return false;
});

控制器

public class JsonController : AsyncController
{
    [HttpGet]
    public async Task<JsonResult> GetData()
    {
        using (var client = new HttpClient())
        {
            client.BaseAddress = new Uri("http://localhost:8000/myservice.svc/");
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            HttpResponseMessage response = await client.GetAsync("GetData");
            var result = await response.Content.ReadAsAsync<JSONResponse>();
            return Json(result, JsonRequestBehavior.AllowGet);
        }
    }
}

模型

class JSONResponse{ 
    public int Value { get; set; } 
    public string Text { get; set; }
}

我从asp.net mvc应用程序异步调用wcf restful服务并在div中显示结果。 当我单击按钮并且服务开始处理并且我尝试同时更改页面时,我无法...并且仅在我从服务获得结果后页面才会更改。

我怎样才能做到这一点,以便我可以在服务执行时不断更改,何时完成我只是在div中显示数据?

编辑:更改页面含义会在div下面呈现不同的部分视图。

1 个答案:

答案 0 :(得分:1)

正如我在博客中描述的那样,async doesn't change the HTTP protocol

您需要使用专为此设计的技术,例如SignalR。