2017-08-06 99 views
0

我編寫了像網上其他人一樣,但我的WebMethod沒有從後操作中擊中。我相信我的代碼很好,但我會發布我的代碼以防萬一。 我在WebMethod中放置了一個斷點,這是我知道它不被調用的方式。 任何幫助,將不勝感激。AJAX POST到WEB方法不工作我

AXAJ

   var div = document.getElementById(this.id); 
       var divid = div.getElementsByClassName("portlet-id"); 

       varSQL="UPDATE [ToDoTrack] SET [Status] = '" + this.id + "' WHERE [ID] = '" + divid[0].innerHTML + "'"; 

       var item = {}; 
       item.status = this.id; 
       item.id = divid[0].innerHTML; 
       var Data = '{varSQL: ' + varSQL + ' }' 

       $.ajax({ 
        type: "POST", 
        url: "ToDoTrack.aspx/UpdateDB", 
        data: Data, 
        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
        success: function (response) 
        { 
         window.location.reload(); 
        }, 
        error: function (XMLHttpRequest, textStatus, errorThrown) 
        { 
         alert("Status: " + textStatus); 
         alert("Error: " + errorThrown); 
        } 
       }); 

代碼隱藏

[WebMethod] 
    [ScriptMethod] 
    public static void UpdateDB(string varSQL) 
    { 
     string connStr = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString; 
     using (SqlConnection con = new SqlConnection(connStr)) 
     { 
      using (SqlCommand cmd = new SqlCommand(varSQL)) 
      { 
       cmd.CommandType = CommandType.Text; 
       cmd.Connection = con; 
       con.Open(); 
       cmd.ExecuteNonQuery(); 
       con.Close(); 
      } 
     } 
    } 

回答

0

有一個問題的數據對象,這是一個字符串,而不是一個對象 它不建議創建客戶端上的SQL這是一個安全漏洞,除非它是一個應用程序

//Problem is a string not object 
var Data = '{varSQL: ' + varSQL + ' }' 


//Solution below 

var Data = {'varSQL': varSQL }; 
// Or this 
var Data = 'varSQL='+varSQL; 
+0

從移動設備發佈原諒錯誤和錯誤的語法。 –

+0

謝謝EDC,但即使SQL的字符串已經通過,我也希望WebMethod至少可以被調用,但事實並非如此。 – Dennis

+0

關於安全性,我認爲這可能是一個壞主意,但我只是想測試,看看數據庫是否得到更新 – Dennis

0

的代碼似乎工作正常,但如果你在未來有這個問題,這是我從網上找來的東西,你似乎需要爲阿賈克斯後與webMethods的工作:

確保在您的網址AJAX是正確的

確保您的JSON是良好形成

設置<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">,我的腳本經理是在我的Site.Master

設置settings.AutoRedirectMode = RedirectMode.Off;在App_Start> RouteConfig.cs文件中