我试图在aspx页面后面的代码中调用一个函数,并且无处可去。我一直使用通用处理程序(ashx文件),但想在页面本身中放入一些Web方法。我已经回到基础并创建了一个带有1页的新应用程序,只需添加一个按钮,一个脚本引用(jQuery)和一个脚本。有一个简单的返回字符串的web方法。这是代码......
ASPX
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="WebMethod.aspx.cs" Inherits="temp_WebMethod" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript" src="../scripts/jquery.min.js"></script>
</head>
<body>
<form id="form1" runat="server">
<div>
<button id="hello" type="button">Say Hello</button>
</div>
</form>
<script type="text/javascript">
$("#hello").on("click", function () {
$.ajax({
contentType: "application/json; charset=utf-8",
data: {},
dataType: "JSON",
type: "POST",
url: "WebMethod.aspx/Hello"
})
.done(function (data) {
alert(data);
})
.error(function (jqXHR, textStatus, error) {
console.dir(error);
alert(textStatus);
});
});
</script>
</body>
</html>
代码
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.Services;
using System.Web.Script.Services;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class temp_WebMethod : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
[WebMethod()]
[ScriptMethod(UseHttpGet=false)]
public static string Hello()
{
return "{\"response\":\"Hello world\"}";
}
}
正如您所看到的,它非常基本,我只是想在我开始尝试使用它之前让这个概念有效。
目前,我将页面返回到ajax调用,就好像url末尾没有方法名称一样。此外,如果我在Hello()
方法中放置一个断点,那么它永远不会被触发。我看过很多网站(这里有很多问题),但没有一个网站有过帮助。
我不知道为什么我不能做这么简单的工作,并感谢任何帮助。
答案 0 :(得分:0)
我会尝试将其作为GET,然后您可以在浏览器中点击它并查看确切的文本。一旦你有一个使用GET的ajax请求,将其更改为帖子并更改你的javascript。
答案 1 :(得分:0)
您需要将以下代码添加到web.config文件中.....
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept" />
</customHeaders>
</httpProtocol>