WinForm程序员很长一段时间,但是对Web编程场景不熟悉。我有Visual Studio 2010,我创建了一个新的WebSite项目。 我似乎无法使用ajax来调用我创建的web方法。当我点击页面上的按钮时,根本没有任何事情发生。
在创建WebSite项目时,看起来jquery 1.4.1会自动添加到Scripts文件夹中。
在Default.aspx中,我添加了2个脚本标记:
<script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript" src="Scripts/Process.js">
我在页面上放置了一个按钮,其中onclick函数在Process.js中定义:
<input id="btnTest" type="button" value="Test" onclick="btnTest_onclick()" />
在Process.js中,我有以下代码:
function btnTest_onclick() {
var strData = JSON.stringify({
userid: 5
});
alert(strData);
$.ajax({
url: 'Default.aspx/GetData',
type: "POST",
data: strData,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: Success,
failure: Failure,
async: true
});
}
function Success(data) {
alert("success");
}
function Failure(data) {
alert("failure");
}
在Default.aspx.cs中:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
[WebMethod()]
public static string GetData(int id)
{
return "hello, my id is " + id;
}
}
答案 0 :(得分:5)
我不知道是否需要使用JQuery进行Ajax请求,但是您可以使用ASP.NET ajax的功能更轻松地执行ajax请求来寻呼方法。
首先,我想要注意,要使用PageMethods,您需要将脚本管理器控件添加到页面并指定EnablePageMethods =“True”。
当您这样做时,ScriptManager将呈现PageMethods客户端定义,它代表页面上已定义页面方法的代理,您可以使用Ajax请求轻松调用此方法。
因此,您可以尝试以下代码:
<asp:ScriptManager ID="ScriptManager" runat="server" EnablePartialRendering="true" EnablePageMethods="True" />
<input id="btnTest" type="button" value="Test" onclick="btnTest_onclick()" />
<script type="text/javascript">
function btnTest_onclick() {
PageMethods.GetData(5, Success, Failure);
}
function Success(data) {
alert("success");
alert(data);
}
function Failure(data) {
alert("failure");
}
</script>
正如您所看到的,此代码的代码行数较少且有效。
答案 1 :(得分:1)
数据项名称必须与页面方法参数匹配:
var strData = JSON.stringify({
id_MATCH: 5
});
[WebMethod()]
public static string GetData(int id_MATCH)
{
return "hello, my id is " + id_MATCH;
}
答案 2 :(得分:0)
以下是Ajax帖子和要处理的Web方法
<input id="btnTest" type="button" value="Test" onclick="btnTest_onclick()" />
<script type="text/javascript" >
function btnTest_onclick() {
var strData = JSON.stringify({
userid: 5
});
alert(strData);
$.ajax({
url: 'Default.aspx/GetData',
type: "POST",
data: strData,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: Success,
failure: Failure,
async: true
});
}
function Success(data) {
alert("success");
}
function Failure(data) {
alert("failure");
}</script>
[System.Web.Services.WebMethod()]
public static string GetData(int userid)
{
return "hello, my id is " + userid;
}
请查看以上代码,其中$ .ajax发送的数据名称与webmethod中的相同。
由于