javascript
  • asp.net
  • vb.net
  • 2011-12-14 158 views 0 likes 
    0

    我正在使用一個調用JavaScript的Web方法的VB.Net頁面,這是工作到一個星期前,現在由於某種原因不起作用。我想知道是否有人可以給我任何想法,因爲我現在完全失去了知覺。Web方法不被調用

    首先我的網頁生成的項目列表,可以點擊,這是否是該行:

    TicketHTML = TicketHTML + "<td><img src='../images/delete.png' Class='imgTicketClose' alt='Delete Task' onclick='DeleteTicket(" + row("id").ToString() + ")' /></td></tr>" 
    

    我知道這是工作爲被點擊的項目時,我得到一個JavaScript彈出,所以我會假設問題不在這裏。

    現在我的javascript:

    function DeleteTicket(ticketID) 
        { 
         var answer = confirm("Do you really want to delete this task?") 
         if (answer) 
         { 
          PageMethods.DeleteTask(ticketID); 
          window.location.reload() 
         } 
        } 
    

    我認爲問題就在這裏爲Web方法似乎從來沒有調用和頁面似乎並不重裝下去,但我不明白爲什麼這會如果JavaScript,以失敗顯示確認對話框。

    爲了完整起見,這裏是我的web方法,雖然我知道這不是因爲我已經對數據庫進行概要分析而被調用。

    <System.Web.Services.WebMethod()> 
        Public Shared Sub DeleteTask(ticketID As Integer) 
        Dim conn As New SqlConnection(ConfigurationManager.ConnectionStrings("Blueprint").ToString()) 
    
        Dim cmd As New SqlCommand 
        cmd.CommandType = CommandType.StoredProcedure 
        cmd.CommandText = "spDeleteNonTicketItem" 
        cmd.Parameters.AddWithValue("@ItemID", ticketID) 
    
        cmd.Connection = conn 
    
        conn.Open() 
    
        cmd.ExecuteNonQuery() 
    
        conn.Close() 
    
        End Sub 
    

    那麼我可以看看?任何建議將不勝感激。謝謝

    編輯:web.config文件中的任何東西都可以防止頁面方法執行? 我剛剛注意到這發生了一個完全獨立的Web方法,並檢查整數傳遞到javascript與警報(),他們都是有效的

    +0

    你可以在javascript中執行VB函數嗎? :O – 2011-12-14 14:35:10

    +0

    @Shvelo yep:DI有這個工作一陣子,但不知道爲什麼它不工作了 – Purplegoldfish 2011-12-14 14:36:41

    +1

    在C#中,你需要將你的方法標記爲[WebMethod],不知道VB – Erix 2011-12-14 14:36:57

    回答

    1

    編輯 - 我可以看到你已經添加了WebMethod屬性。

    你可以做的一件事是爲你的頁面方法調用添加一個錯誤處理程序。您通常可以爲onsuccess和onError提供方法處理程序。

    例如,您可以添加以下JavaScript方法:

    function OnFailed(error) { 
        // Alert user to the error. 
        alert(error.get_message()); 
    } 
    

    ,然後在你的PageMethods撥打:

    function DeleteTicket(ticketID)  
        {  
         var answer = confirm("Do you really want to delete this task?");  
         if (answer)  
         {   
          PageMethods.DeleteTask(ticketID, null, OnFailed);   
          window.location.reload();  
         } 
        } 
    

    就發現了一個問題,StackOverflow上與example of this。還請注意web.config中的CustomError的影響。

    Further Edit。

    你最近做過發佈嗎?

    你需要確保:

    1)在你的頁面的ScriptManager,的EnablePageMethods = 「true」 是設置

    2)的Web.config應該在相關章節下面幾行:

    <system.web> 
    <httpHandlers> 
    <remove verb="*" path="*.asmx"/> 
    <add verb="*" path="*.asmx" 
    type="Microsoft.Web.Script.Services.ScriptHandlerFactory" 
    validate="false"/> 
    </httpHandlers> 
    <httpModules> 
    <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> 
    </httpModules> 
    </system.web> 
    
    2

    您是否能夠確認其嘗試執行PageMethod,就像您在其中設置了斷點時它正在擊中它?

    我不知道這是否導致您的問題,但我沒有看到這一點:

    function DeleteTicket(ticketID) 
    { 
        var answer = confirm("Do you really want to delete this task?"); 
        if (answer) 
        { 
         PageMethods.DeleteTask(ticketID); 
         window.location.reload(); 
        } 
    } 
    

    不知是否加入分號是造成你的問題。

    相關問題