2013-12-20 19 views
2

我有一個AJAX調用我的代碼隱藏方法。我已經設置了一切,但似乎不可靠。AJAX腳本管理器PageMethod並不總是調用

java函數使用PageMethods。在代碼隱藏中調用我的方法。我大多數時候都做過一些測試,但有時出於某種原因,它不會在代碼隱藏中調用該方法。

我不知道爲什麼它不會這麼做,並且無法從它失敗的時代中看到任何patttern。

它通過點擊子窗口中的鏈接來執行,但你可以繼續點擊相同的鏈接,每次點擊X次的方法,然後突然其中一個不會這樣做。

父窗口AJAX調用:

function Update(custtype) { 
    PageMethods.CustType(custtype) 
} 

調用該函數的子窗口:

<script type="text/javascript"> 
    function sendval(value) { 
     window.parent.onSave(); 
     window.parent.Update(value); 
     window.top.document.getElementById('txtCustomerType').value = value; 
     window.parent.location.reload() 
     } 
    </script> 

父窗口的方法,由於某種原因並不總是叫:

[System.Web.Services.WebMethod] 
public static string CustType(string custtype) 
{ 
    HttpContext.Current.Session["CustType"] = ""; 
    HttpContext.Current.Session["CustType"] = custtype; 
    return custtype; 
} 

回答

2

看起來像一場比賽 - location.reload與MS-Ajax一起撕下我的頁面nfrastruture和完成速度比更新可以完成調用更快。您必須將所有後續代碼放入onSuccess回調中,否則您將獲得比賽。

function sendval(value) { 
    window.parent.onSave(); 
    window.parent.Update(value, onSuccess, /*onFailure*/); 
    function onSuccess(result){ 
     window.top.document.getElementById('txtCustomerType').value = value; 
     window.parent.location.reload() 
    } 
}