2016-09-20 137 views
-3

enter image description here Ajax函數不更新數據。數據加載在引導程序的對話框中,我需要更新數據與changes.i還檢查瀏覽器中的值是來自對話框,但不在數據庫中發佈..如何解決..預先感謝Ajax函數不起作用

客戶端:

$("#UpdateTbl").click(function() { 
    var id = $(this).attr("edit-id"); 
    var user = {}; 
    debugger; 
    user.DayDesc = $("#DaybookDesc1").val(); 
    user.VoucherNo = $("#Prifix1").val(); 
    user.VoucherNo1 = $("#Surffix1").val(); 


    $.ajax({ 
     type: "Post", 
     contentType: "application/json; charset=utf-8", 
     url: "DaybookMast.aspx/UpdateData", 
     data:JSON.stringify('{objEmployee: ' + JSON.stringify(user) + ', eid : ' + id + '}'), 
     dataType: "json", 
     success: function (data) { 
      if (confirm("Are you want to change !") == true) { 
       alert("Updated successfully"); 
      } else { 
       alert("canceled changes"); 
      } 

     }, 
     error: function (data) { 
      alert("Error while Updating data of :" + id); 
     } 
    }); 
}); 

服務器端:

[WebMethod] 
public static void UpdateData(DayBooks objEmployee, string eid) //Update data in database  
{ 
    using (var con = new SqlConnection(strConnection)) 
    { 
     var query = "update DayBooks set DayDesc='" + objEmployee.DayDesc + "',VoucherNo='" + objEmployee.VoucherNo + 
        "',VoucherNo1='" + objEmployee.VoucherNo1 + "'where DayCode='" + eid + "'"; 
     con.Open(); 
     var cmd = new SqlCommand(query, con); 
     cmd.ExecuteNonQuery(); 
     con.Close(); 
    } 
} 
+0

objEmployee是客觀化還是字符串? – mplungjan

回答

1

我想你應該不字符串化JSON您發表您的數據:

$("#UpdateTbl").click(function() { 
    var id = $(this).attr("edit-id"); 
    var user = {}; 
    debugger; 
    user.DayDesc = $("#DaybookDesc1").val(); 
    user.VoucherNo = $("#Prifix1").val(); 
    user.VoucherNo1 = $("#Surffix1").val(); 


    $.ajax({ 
     type: "Post", 
     contentType: "application/json; charset=utf-8", 
     url: "DaybookMast.aspx/UpdateData", 
     data: {"objEmployee": user, "eid": id}, 
     dataType: "json", 
     success: function (data) { 
      if (confirm("Are you want to change !") == true) { 
       alert("Updated successfully"); 
      } else { 
       alert("canceled changes"); 
      } 
     }, 
     error: function (data) { 
      alert("Error while Updating data of :" + id); 
     } 
    }); 
}); 

請注意:不要在您的數據庫語句中執行SQL注入...而是使用參數來避免可能的安全漏洞。 更多信息@https://stackoverflow.com/a/6548006/2805121

+0

無法正常工作...... –

+1

什麼不正確?你在網絡標籤中看到什麼?你的服務器代碼實際上是被稱爲?請求頭中有什麼? – Nsevens

+0

沒有網絡選項卡清除,但在控制檯中: - 無法加載資源:服務器響應的狀態爲500(內部服務器錯誤) –

1

首先,你有什麼錯誤信息?

在測試Ajax & C#更新函數之間的通信之前,您需要測試連接是否是函數。

public static void UpdateData(DayBooks objEmployee, string eid) //Update data in database  
{ 
    using (var con = new SqlConnection(strConnection)) 
    { 
     var query = "UPDATE DayBooks set DayDesc=12345,VoucherNo=54321,VoucherNo1=1 where DayCode=12"; 
     con.Open(); 
     var cmd = new SqlCommand(query, con); 
     cmd.ExecuteNonQuery(); 
     con.Close(); 
    } 
} 

並檢查您的表是否已更新,如果更新表成功。 您需要調試Ajax數據請求。

由於@Nsevens代碼:

$("#UpdateTbl").click(function() { 
    var id = $(this).attr("edit-id");  <- what's value of id 
    var user = {}; 
    debugger; 
    user.DayDesc = $("#DaybookDesc1").val(); <- what's value of user.DayDesc 
    user.VoucherNo = $("#Prifix1").val(); <- what's value of user.VoucherNo 
    user.VoucherNo1 = $("#Surffix1").val(); <- what's value of user.VoucherNo1 


    $.ajax({ 
     type: "Post", 
     contentType: "application/json; charset=utf-8", 
     url: "DaybookMast.aspx/UpdateData", 
     data: {"objEmployee": user, "eid": id}, <- what's value of data 
     dataType: "json", 
     success: function (data) { 
      if (confirm("Are you want to change !") == true) { 
       alert("Updated successfully"); 
      } else { 
       alert("canceled changes"); 
      } 
     }, 
     error: function (data) { 
      alert("Error while Updating data of :" + id); 
     } 
    }); 
}); 

使用的console.log用於調試:

的console.log( 「userArray:」 +用戶);

這會有幫助,當你有這樣的問題時,檢查你發送的數據是很重要的。