如何从Html调用.Net webform方法(使用jQuery AJAX )

xurqigkl  于 2023-04-05  发布在  jQuery
关注(0)|答案(1)|浏览(175)

我有一个.Net Web窗体项目,如下所示。x1c 0d1x
我想调用这个GetData方法从我的Html-Jquery在一个按钮点击

$.ajax({
                    type: "GET",
                    url: "http://localhost:49313/WebForm.aspx/GetData/",
                    data: {},
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: OnSuccess,
                    failure: function (response) {
                        alert(response);
                    }
                });

但我得到的错误如下。请让我有什么配置,我添加

CORS策略已阻止从源'null'访问位于'http://localhost:49313/WebForm. aspx/GetData/'的XMLHttpRequest:对印前检查请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许来源”标头。

pqwbnv8z

pqwbnv8z1#

首先,即使不发送数据,我也建议您始终使用POST。Get倾向于建议和“暗示”您调用REST端点。
因此,为了使代码正常工作,您需要将例程(实际上是有问题的网页的方法)标记/设置为static。
你需要这个:

[WebMethod]
    public static string GetDate()
    {
        return "Hellow how are you";
    }

因此,您需要将该例程定义为webmethod。
因此,您需要:

using System.Web.Services;

现在示例看起来像这样:

function mytest() {

            $.ajax({
                type: "POST",
                url: "GuageTest2.aspx/GetData",
                data: {},
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (MyReturnData) {

                    alert("Return data = " + MyReturnData.d)

                },
                error: function (xhr, status, error) {
                    var errorMessage = xhr.status + ': ' + xhr.statusText
                    alert('Error - ' + errorMessage)
                }
            });

注意非常接近,你必须使用“.d”来获得返回值(它是一个.net的东西,我相信这是一个安全问题,但“.d”是你如何获得返回值的。
假设你想返回几个值?
然后我经常直接把一个类塞进那个页面后面的代码中。
你说:

public class MyStatInfo
    {
        public int TotalFiles = 0;
        public int PdfFiles = 0;
        public int ZipFiles = 0;
    }

    [WebMethod]
    public static MyStatInfo GetData()
    {
        MyStatInfo MyData= new MyStatInfo();
        MyData.TotalFiles = 100;
        MyData.PdfFiles = 75;
        MyData.ZipFiles = 25;
        return MyData;
    }

现在的js代码是这样的:

success: function (MyStats) {

                    var TotalFiles = MyStats.d.TotalFiles
                    var PdfFiles = MyStats.d.PdfFiles
                    var ZipFiles = MyStats.d.ZipFiles

  ... do whatever with the value(s)

同样,请注意使用“.d”来获取返回的数据。

相关问题