【问题标题】:jquery+AJAX+c# causing page loadjquery+AJAX+c#导致页面加载
【发布时间】:2012-11-18 07:37:18
【问题描述】:

我正在尝试进行 Ajax 调用,但它会导致页面加载 这是我的jQuery代码

    var ajaxUrl = "AjaxCallHandler.aspx";
function _init_Chart() {

$.ajax({
    type: "GET",        //GET or POST or PUT or DELETE verb
    url: ajaxUrl,       // Location of the service
    data: "OpCode=GetCallAverageReportForGraph&Parms=DeptId^17~Month^10~Year^2012",         //Data sent to server
    contentType: "",    // content type sent to server
    dataType: "string",     //Expected data format from server
    processdata: true,  //True or False
    success: function (responseString) {//On Successful service call
        alert(responseString);
    }
});

return false;
}

这是我的 AjaxCallHandler.aspx.cs c# 代码

protected void Page_Load(object sender, EventArgs e)
{
    string responseMessage = "";
    string status = "SUCCESS";
    try
    {
        if (Request.QueryString["OpCode"] == null)
        {
            throw new Exception("Invalid Request, OpCode missing.");
        }
        string operationRequested = Request.QueryString["OpCode"];
        string Params = Request.QueryString["Parms"];
        switch (operationRequested)
        {
            case "GetCallAverageReportForGraph":
                responseMessage = GetCallAverageReportForGraph(Params);
                break;
            case "GetCallAverageReportDetails":
                responseMessage = GetCallAverageReportDetails(Params);
                break;
        }
    }
    catch (Exception exp)
    {
        status = "EXCEPTION";
        responseMessage = exp.Message;
    }
    Response.ClearContent();
    Response.ClearHeaders();
    Response.Write(responseMessage);
}

我不知道为什么这件事会导致页面加载。我是 jquery AJAX 的新手,但是当我尝试使用 javascript AJAX 时,它在没有任何页面加载的情况下工作正常。

【问题讨论】:

  • 你必须避免从 ajax 调用一个完整的 aspx 页面,特别是这样,只是为了运行 page_load 并制作所有清晰的标题。使用 ether 一个处理程序,ether webservice。
  • 相同代码stackoverflow.com/questions/13414683/…其他问题。

标签: c# jquery asp.net ajax


【解决方案1】:

我假设这是您的 AjaxCallHandler.aspx 背后的代码?

如果是这样,您的 AJAX 调用本质上只是加载该页面的结果,就像您使用浏览器窗口(即 GET)点击它一样。

大多数时候,当您想要执行 AJAX 请求时,您会针对返回 JSONResult ActionResult 或 Web 服务 (.asmx) 的 MVC 函数调用它。

由于您只是访问一个常规网页,它总是会在该页面的代码后面执行 Page_Load 事件。

【讨论】:

  • 这是 jquery AJAX 的情况。我问这个因为我之前使用的是 javascript AJAX 并且只调用了一个 aspx 页面,它在没有任何页面加载的情况下工作正常。任何特殊原因有点行为?
  • 请求的页面可能已被缓存。 HTTP 和 ASP.NET 都有多层缓存。在这种情况下,处理程序的结果会从缓存中检索出来,根本不需要调用它的 aspx 处理程序。
  • 行为应该是一样的。 IIS 在执行其事件堆栈时不应该关心是谁在发出 GET 请求
  • @jade 我要补充一点,正如 Honza 指出的那样,如果您使用 IE 进行测试,它可以通过 AJAX 缓存做一些时髦的事情,您应该知道这可以解释您为什么会这样没有始终看到您的刷新。
  • 缓存是问题...设置缓存:错误到 ajax 调用解决了问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-20
相关资源
最近更新 更多