尝试从 jquery 调用 .net 中的方法(自定义 sql 更新方法),但我收到 404 和 500 等错误
Posted
技术标签:
【中文标题】尝试从 jquery 调用 .net 中的方法(自定义 sql 更新方法),但我收到 404 和 500 等错误【英文标题】:Trying to call a method (a custom sql update method) in .net from jquery but im getting errors such as 404 and 500 【发布时间】:2019-09-18 14:42:19 【问题描述】:我正在尝试从 Web 窗体项目中的 javascript 文件调用 .net 方法,我不确定我是否正确执行操作并且正在努力调试。
.net 方法:
[System.Web.Services.WebMethod]
public static void UpdateDatabase(string location, string content)
string connectionString = @"Server=DESKTOP-JFCN2O9\SQLEXPRESS;Database=Opticron;User Id=website;Password=Popcorn99!";
SqlConnection connection = new SqlConnection(connectionString);
connection.Open();
SqlCommand command = new SqlCommand("UPDATE [dbo].[Content] SET [ContentData] = " + content + "WHERE [ContentLoc] = " + location);
command.CommandType = System.Data.CommandType.Text;
command.Connection = connection;
command.ExecuteNonQuery();
connection.Close();
JavaScript 文件:
$(document).ready(function ($)
$('.editBtn').click(function ()
$(this).closest("tr").find(".contentInput").removeAttr('readOnly');
$(this).closest("td").find(".saveBtn").removeAttr('hidden');
)
$('.saveBtn').click(function ()
var changedContent = $(this).closest("tr").find(".contentInput").val();
var locOfChange = $(this).closest("tr").find(".loc").text();
$.ajax(
url: '../../WebForm1.aspx/UpdateDatabase',
method: 'post',
contentType: 'application/json',
data: 'location:' + locOfChange + ', content:' + changedContent + '',
dataType: 'json',
success: function ()
alert("success")
,
error: function (error)
alert(error)
)
$(this).closest("tr").find(".contentInput").attr('readonly')
$(this).closest("td").find(".saveBtn").attr('hidden');
)
);
我希望数据库能够更新并且网页能够按预期进行调整......数据库应该没有任何问题,因为我在页面加载中使用了一个选择功能并且可以正常工作.
插件信息:错误: 当我加载页面时,一切都加载了,但我收到了这个错误 - 加载资源失败:服务器响应状态为404()
当我单击 saveBtn 时,我收到此错误 - jquery.js:9600 POST https://localhost:44341/WebForm1.aspx/UpdateDatabase 500
【问题讨论】:
【参考方案1】:您的更新 SQL 语句格式错误。字符串周围缺少空格和引号。
变化:
SqlCommand command = new SqlCommand("UPDATE [dbo].[Content]
SET [ContentData] = " + content + "WHERE [ContentLoc] = " + location);
收件人:
SqlCommand command = new SqlCommand("UPDATE [dbo].[Content]
SET [ContentData] = '" + content + "' WHERE [ContentLoc] = '" + location + "');
如果这不能解决您的所有问题,请分享您遇到的实际错误。 您是否正确获取位置和内容?
【讨论】:
是的,位置和内容都已被放入警报中,以确保它们是正确的并且它们是......但是这仅在 jquery 中完成,我不确定它们是否以正确的格式接收并且这样......但我不确定如何检查。 不能调试服务吗?除了格式错误的更新 SQL 之外,我看到的唯一错误是传递给服务的数据格式。【参考方案2】:感谢 Nawed Khan
解决方案:
我必须在我的 sql 和 json 属性周围添加双引号:
data: 'location:' + locOfChange + ', content:' + changedContent + '',
到
data: 'location: "' + locOfChange + '", content: "' + changedContent + '"',
和
SqlCommand command = new SqlCommand("UPDATE [dbo].[Content] SET [ContentData] = " + content + "WHERE [ContentLoc] = " + location);
到
SqlCommand command = new SqlCommand("UPDATE [dbo].[Content] SET[ContentData] = '" + content + "' WHERE[ContentLoc] = '" + location + "'");
【讨论】:
以上是关于尝试从 jquery 调用 .net 中的方法(自定义 sql 更新方法),但我收到 404 和 500 等错误的主要内容,如果未能解决你的问题,请参考以下文章
没有从 select2 ajax 调用 Asp dot net Web 方法