2012-04-05 47 views
0

我有一個JavaScript函數,它構建了一個字符串,然後將字符串發送到c#代碼隱藏工作。問題是,PageMethods.Method永遠不會被調用。PageMethods.Method沒有從javascript中調用

相關代碼:

aspx頁面:

<asp:ScriptManager ID="ScriptManager1" EnablePageMethods="true" EnablePartialRendering="true" 
    runat="server" /> 
<script type="text/javascript"> 
function makeString() { 
     debugger 
     var a = document.getElementById("ddlRptYear").value + "_"; 
     var b = document.getElementById("ddlRptType").value + "_"; 
     var c = document.getElementById("ddlGeography").value + "_"; 
     var d = ""; 
     var e = ""; 
     var x = document.getElementById("ddlTouchPoint"); 
     var y = document.getElementById("ddlAOR"); 

     if (x.disabled == false) { 
      d = x.value + "_"; 
     } 

     if (y.disabled == false) { 
      e = y.value; 
     } 

     var pptString = a + b + c + d + e + ".ppt"; 
     PageMethods.GetPPTString(pptString, onSuccess, onFail); 
    } 

代碼隱藏:

[System.Web.Services.WebMethod] 
    public static void GetPPTString(string pptString) 
    { 
     if ((pptString == "") || (pptString == null)) 
     { 
      throw new Exception("Error: No String Sent."); 
     } 
     else 
     { 
      throw new Exception(pptString); 
     } 
    } 
+0

你怎麼知道它永遠不會被調用?在它到達正確的處理程序之前是否有可能發生異常?您是否檢查了流量以確保請求正在發送,如果有的話,響應是什麼? JavaScript在它達到那個點之前是否會拋出一個錯誤? – 2012-04-05 22:19:49

+0

我知道它永遠不會被調用,因爲我通過了代碼。調試器標籤在JavaScript中,並在C#中斷。它只是通過呼叫而沒有進入方法。 – 2012-04-06 13:58:00

+0

那麼JavaScript調用是異步的,所以它會自然地立即返回執行,但真正的問題是它在做什麼?你是否檢查過流量,看看實際發送的*什麼*返回?如果不這樣做,你只會在黑暗中刺傷並浪費你的時間。 – 2012-04-06 16:28:59

回答

0

我不得不對在RadioButtonList啓用自動回了被打的SelectedIndexChanged方法。它現在可以工作,但是我需要在將來找出一些東西來回過頭來。