【问题标题】:getting 500 internal server error when sending ajax data to the server side method in asp.net c#将ajax数据发送到asp.net c#中的服务器端方法时出现500个内部服务器错误
【发布时间】:2017-12-06 21:22:20
【问题描述】:

当我当时向服务器方法提交 ajax 数据时,会出现 500 个内部错误,而如果我当时在没有数据的情况下调用相同的 ajax 方法,它工作得很好。我真的很困惑 ajax 数据将如何发送到服务器方法。

这是我的代码

<asp:ComboBox ID="dropdwn_consignor" runat="server" onfocusout="blurFunction()"        ></asp:ComboBox>

<script>
    function blurFunction() {
        var c = $find("<%=dropdwn_consignor.ClientID %>");

        $.ajax({
            type: "POST",
            url: "Booking123.aspx/GetCnorGSTNo",
            data: "{ TinNo1: '"+ c.get_textBoxControl().value +"'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            async: "true",
            cache: "false"
        });

    }
</script>     

[WebMethod]
public static void GetCnorGSTNo(string Param1)
{
 // here is the code
}

请帮我解决这个问题。

谢谢。

【问题讨论】:

  • 单步执行你的代码,你会看到它抛出了什么错误(500 是内部错误,所以它在你的 c# 中失败了)。如果您不知道如何调试,可以尝试查看您的事件日志。如果您不知道该怎么做,请尝试在没有 ajax 的情况下发布您的表单,页面将显示您的错误 - 如果您删除了友好的错误页面
  • 如果您收到 500 错误,则问题出在服务器上,因此我们实际上需要查看 // here is the code 部分。另请注意,您的参数名为Param1,而不是TinNo1,您可以将对象直接交给jQuery 进行编码;无需将丑陋的类似 JSON 的字符串拼凑在一起
  • @RoryMcCrossan 首先你的感觉太糟糕了。我已经告诉你,调试点没有出现在方法上,那么你为什么要查看代码。呵呵。首先仔细阅读问题,然后发表评论,否则不需要给出。了解。
  • 您的问题中没有任何内容表明您已经调试了服务器端代码。

标签: javascript c# jquery asp.net ajax


【解决方案1】:

检查参数名称:

GetCnorGSTNo() 的字符串参数是“Param1”而不是“TinNo1”

试试看:

data: JSON.stringify({ 
    Param1: c.get_textBoxControl().value 
}),

【讨论】:

  • data: { Param1: c.get_textBoxControl().value } 可以工作 - 无需过于复杂。
  • 谢谢。 @Jack 和 Rory McCrossan