我使用VB.NET代码隐藏在ASP.NET中对一个新的Web应用程序进行原型设计,该代码隐藏使用JQuery的AJAX来调用WebMethod,但我不断得到parsererrors。这是我的标记:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="testpage.aspx.vb" Inherits="WorkOrder_testpage" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title></title>
<link href="../jquery-ui-1.9.2.custom.min.css" rel="stylesheet" />
<script src="../jquery-1.8.3.js"></script>
<script src="../jquery-ui-1.9.2.custom.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$('#btnTest').click(function () {
$.ajax({
type: 'POST',
contentType: 'application/json; charset=utf-8',
url: 'testpage.aspx/testFunction',
//data: {a:'hello'},
dataType: 'json',
success: function (data) {
$('#lblDebug').text(data);
},
error: function (jqXHR, textStatus, errorThrown) {
alert(textStatus + ": " + errorThrown);
}
});
});
$('#btnTest').focus();
});
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" />
<span id="lblDebug"></span><input type="button" id="btnTest" value="TEST" />
</form>
</body>
</html>
我的代码隐藏:
Imports System.Web.Services
Imports System.Web.Script.Serialization
Partial Class WorkOrder_testpage
Inherits System.Web.UI.Page
<WebMethod()> _
Public Shared Function testFunction() As String
Dim jsonSer As New JavaScriptSerializer
testFunction = jsonSer.Serialize("hello")
End Function
End Class
我已经尝试过的事情:
在哪里我认为我错了:
我认为我还没有正确地格式化我的JSON,在这种情况下请注意我,或者有一些我不知道的配置阻止我的JSON通过。
我知道这与其他大约80个问题相似,但到目前为止我找不到任何问题似乎都有任何帮助。
我的帮助来源:
asp.net jquery ajax json: Simple example of exchanging data
PageMethods, jQuery and JSON
http://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/
http://www.aspdotnet-suresh.com/2013/12/jquery-ajax-json-example-in-aspnet.html
还有更多。
2014年10月1日更新
我尝试了以下类似/相同结果的Mun的答案。如果有人使用相同的结构完成此操作,我想知道您必须在web.config文件中添加或配置多少(如果有)。
答案 0 :(得分:1)
通过 PageMethods 而不是jQuery调用您的webmethod可能更容易。
代码背后(在C#中,但很容易转换为VB.NET):
[WebMethod]
public static string SayHello(string name)
{
return "Hello " + name;
}
web窗体:
$("#btnTest").click(function() {
PageMethods.SayHello("Test", function(result) {
alert(result); // Should show "Hello Test"
});
});
SayHello 方法的Javascript代理将由脚本管理器自动创建,允许它被称为客户端。