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);
}
}
你怎麼知道它永遠不會被調用?在它到達正確的處理程序之前是否有可能發生異常?您是否檢查了流量以確保請求正在發送,如果有的話,響應是什麼? JavaScript在它達到那個點之前是否會拋出一個錯誤? – 2012-04-05 22:19:49
我知道它永遠不會被調用,因爲我通過了代碼。調試器標籤在JavaScript中,並在C#中斷。它只是通過呼叫而沒有進入方法。 – 2012-04-06 13:58:00
那麼JavaScript調用是異步的,所以它會自然地立即返回執行,但真正的問題是它在做什麼?你是否檢查過流量,看看實際發送的*什麼*返回?如果不這樣做,你只會在黑暗中刺傷並浪費你的時間。 – 2012-04-06 16:28:59