【发布时间】:2023-03-12 00:41:01
【问题描述】:
尝试从 javascript (jquery) 调用 vb 代码中的函数时出现以下错误
在视图 (.aspx) 我有以下代码:
<asp:ImageButton ID="imgbtnRetirar" runat="server" OnClientClick="return alerteliminar();" IdEliminar='<%# Eval("CODIGO") %>'
ImageUrl="~/Images/ic_eliminar.gif" ToolTip="Borrar al Usuario Aprobador"></asp:ImageButton>
在脚本中我有以下代码:
<script type="text/javascript">
function alerteliminar() {
var letra="cancel";
$("#texto").text("Seguro que desea Eliminar al usuario autorizador?");
$( "#dialog-message" ).dialog({
modal: true,
buttons: {
"Ok": function() {
$( this ).dialog( "close" );
var id = $("#ctl00_ctphFrmContent_grvLista_ctl02_imgbtnRetirar").attr("ideliminar");
$.ajax(
{
type: "POST",
url: "AprobadoresxModificacion.aspx/EliminarRegistro",
data: "{'Id':'" + id + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
console.log(msg)
}
});
},
"Cancel": function() {
$( this ).dialog("Eliminar");
}
}
});
}
</script>
在 vb 代码中,我有以下内容:
<System.Web.Services.WebMethod()> _
Public Function EliminarRegistro(ByVal Id As Integer) As String
Try
If Me.BorrarAprobador(Integer.Parse(Id)) Then
Me.btnBuscar_Click(Nothing, Nothing)
Return "OK"
Else
Me.Mensaje("No se pudo borrar el registro")
Return "BAD"
End If
Catch ex As Exception
Return ex.Message
End Try
End Function
我得到的错误如下: http://localhost:2091/WebSMEX/Paginas/Mantenimiento/AprobadoresxModificacion.aspx/EliminarRegistro500(内部服务器错误)
【问题讨论】:
-
一种可能性是您的
Id参数是Integer,但您在JSON 中将其作为带引号的字符串值传递:data: "{'Id':'" + id + "'}"。尝试删除值周围的引号:data: "{'Id':" + id + "}"。 -
首先,您需要了解您不是从 jQuery 调用 VB.NET。你调用一个网络方法。您发送请求。然后 asp.net 知道如何调用特定的方法。但没有直接联系。除此之外,我知道
BorrarAprobador和btnBuscar_Click和Mensaje中可能会发生错误。另外,要么停止这个Integer.Parse(Id),要么声明这个ByVal Id As String——你的杰森被引用了。试试"{Id:" + id + "}" -
我尝试了 2 种方法,我得到了同样的错误。
-
我个人不喜欢这样:`localhost:2091`。我喜欢创建虚拟目录。然后我只能调试网站/网络方法并通过 fiddler2 调用它。一旦我看到它有效,我就可以考虑我的 AJAX 是否有效