javascript
  • asp.net
  • vb.net
  • 2011-12-14 81 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(); 
        } 
    } 
    

    不知是否加入分号是造成你的问题。

    相关问题