尝试从 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 等错误的主要内容,如果未能解决你的问题,请参考以下文章

通过 jQuery 调用 ASP.NET 服务器端方法

没有从 select2 ajax 调用 Asp dot net Web 方法

ASP.NET jQuery 错误:未知的 Web 方法

从 jquery summernote 调用父组件函数

jQuery 通过 Ajax 在 ASP.NET MVC C# 中调用 Action 方法

使用 select2 与 ajax 调用 asp.Net 服务自定义参数