2012-11-17 128 views
3

我试图让Ajax调用,但其造成的页面加载 这里是我的jQuery代码的jQuery + AJAX + C#导致页面加载

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); 
} 

我不知道为什么这件事导致页面load.i'm新jquery AJAX,但是当我尝试这与JavaScript AJAX它工作正常,没有任何页面加载。

+0

您必须避免从ajax调用完整的aspx页面,特别是那种方式,只是为了运行page_load并使所有明确的标题。使用ether一个处理程序,ether webservice。 – Aristos

+0

相同的代码http://stackoverflow.com/questions/13414683/ajax-call-not-returning-response-from-c-sharp-code其他问题。 – Aristos

回答

2

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

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

大多数情况下,当您想要执行AJAX请求时,您会针对MVC函数调用该函数,该函数返回JSONResult ActionResult或Web Service(.asmx)。

由于您只是打了一个普通的网页,它总是会在该页面的代码后面执行Page_Load事件。

+0

是这种情况与jQuery的AJAX.I'm问这个因为我早些时候使用JavaScript的AJAX和只调用一个aspx页面,它没有任何页面加载正常工作。这种行为的特殊原因? – iJade

+0

请求的页面可能已被缓存。 HTTP和ASP.NET都有几层缓存。在这种情况下,处理程序的结果将从缓存中检索,而不必调用其aspx处理程序。 –

+0

行为应该是一样的。 IIS不应该关心在执行事件堆栈时谁发出GET请求 –