【发布时间】:2019-02-25 14:13:44
【问题描述】:
我在.asmx web 服务中有一个 web 方法,我通过 jQuery ajax 调用这个方法来更新数据库记录;它在调试期间在我的本地机器上完美运行,问题是当我将它发布到服务器时,它不再工作。令人惊讶的是,不同页面中的其他更新运行良好,请告诉我哪里出错了。
下面是我的代码
jQuery ajax 函数
function Updateaction() {
$('#updateinit').click(function () {
$('#iniativemodal').modal('show');
debugger
var Id= $('#ikipitxt').val();
var name= $('#namtxt').val();
var initd = $('#initdate').val();
var des= $('#descrtxt').val();
var budget= $('#budgettxt').val();
var dur= $('#durationtxt').val();
var inter= $('#intervalstarttxt').val();
var ends =$('#intervalendtxt').val();
var pers= $('#persontxt').val();
var kpi=$('#ikpitxt').val();
$.ajax({
url:"/MyService.asmx/editActionplan?Id=" + $('#ikipitxt').val() + "&name=" + $('#namtxt').val() + "&initdate=" + $('#initdate').val() + "&Description=" + $('#descrtxt').val() + "&budget=" + $('#budgettxt').val() + "&duration=" + $('#durationtxt').val() + "&intervalstart=" + $('#intervalstarttxt').val() + " &intervalend=" + $('#intervalendtxt').val() + "&responseperson=" + $('#persontxt').val() + "&kpi=" + $('#ikipitxt').val() + "",
data: '{Id: ' + Id + ', name: "' + name + '",initdate: "' + initd + '",Description:"' + des + '", budget: "' + budget + '",duration: "' + dur + '",intervalstart: "' + inter + '",intervalend: "' + ends + '",responseperson: "' + pers + '",kpi: "' + kpi + '"}',
type: "POST",
contentType: "application/json;charset=utf-8",
dataType: "json",
success: function (result) {
$('#iniativemodal').modal('hide');
$('#ikipitxt').val("");
$('#namtxt').val("");
$('#initdate').val("");
$('#descrtxt').val("");
$('#budgettxt').val("");
$('#durationtxt').val("");
$('#intervalstarttxt').val("");
$('#intervalendtxt').val("");
$('#persontxt').val("");
$('#ikpitxt').val("");
displayAction();
},
error: function (errormessage) {
alert(errormessage.responseText);
}
});
});
}
网络服务中的网络方法
[WebMethod]
public void editActionplan(int Id, string name,string initdate, string Description, string budget, string duration,string intervalstart,string intervalend,string responseperson,int kpi)
{
string constring = System.Configuration.ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
using (SqlConnection conn = new SqlConnection(constring))
{
//this what you looking for
using (SqlCommand cmd = new SqlCommand(" UPDATE Iniative SET name=@name,initdate=@initdate,Description=@Description,budget=@budget,duration=@duration,intervalstart=@intervalstart,intervalend=@intervalend,responseperson=@responseperson,kpi=@kpi WHERE Id=@Id", conn))
{
try
{
conn.Open();
cmd.Parameters.AddWithValue("@Id", Id);
cmd.Parameters.AddWithValue("@name", name);
cmd.Parameters.AddWithValue("@initdate", initdate);
cmd.Parameters.AddWithValue("@Description", Description);
cmd.Parameters.AddWithValue("@budget", budget);
cmd.Parameters.AddWithValue("@duration", duration);
cmd.Parameters.AddWithValue("@intervalstart", intervalstart);
cmd.Parameters.AddWithValue("@intervalend", intervalend);
cmd.Parameters.AddWithValue("@responseperson", responseperson);
cmd.Parameters.AddWithValue("@kpi", kpi);
cmd.ExecuteNonQuery();
}
catch (Exception)
{
}
finally
{
conn.Close();
}
}
}
}
【问题讨论】:
-
请提供更多信息,而不仅仅是“它不起作用”。调试的第一次尝试应该是检查控制台是否有错误,并查看 AJAX 请求的响应是什么。希望这能给你一些诊断的东西
-
这是你出错的地方:
catch (Exception) { }- 你忽略命令中的任何错误。也许你没有写权限/也许表定义是错误的 - 这就是它会在那个异常中告诉你的。 -
如果它在您的本地运行,您的本地数据库和服务器数据库之间可能存在差异。检查 db 列及其类型,检查您的 Web 服务是否部署在服务器上。尝试写一些日志,
-
@freedomn-m,我已经在 ajax 的成功中放置了一个警报,并通过它执行,请注意,我有一个函数可以更新同一个数据库中的另一个表,它的工作只是在服务器上很好,没有发生的是从 webmethod 执行正确的事情
-
@umer 数据库是完全一样的,而且我还有其他方法来更新实际上正在更新,也在同一个表中,插入做得很好
标签: jquery asp.net ajax asp.net-ajax asmx