Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用ajax调用调用C#[WebMethod]函数_C#_Javascript_Asp.net_Ajax - Fatal编程技术网

使用ajax调用调用C#[WebMethod]函数

使用ajax调用调用C#[WebMethod]函数,c#,javascript,asp.net,ajax,C#,Javascript,Asp.net,Ajax,我试图使用ajax调用从自定义模块中的C#文件调用函数。我有一个.js文件,它使用ajax调用whitelist.aspx/isvalidull(我还尝试了whitelist.cs作为文件扩展名和url,但没有成功)。我需要访问服务器方法isValidURL,传入请求的url,以查看请求的url是否在有效url列表中。如果请求的url在列表中,那么我希望将true返回到javascript文件,否则返回false。这可能吗?以下是我收到的代码: Javascript代码: $(document)

我试图使用ajax调用从自定义模块中的C#文件调用函数。我有一个.js文件,它使用ajax调用whitelist.aspx/isvalidull(我还尝试了whitelist.cs作为文件扩展名和url,但没有成功)。我需要访问服务器方法isValidURL,传入请求的url,以查看请求的url是否在有效url列表中。如果请求的url在列表中,那么我希望将true返回到javascript文件,否则返回false。这可能吗?以下是我收到的代码:

Javascript代码:

$(document).ready(function () {
    function getUrlVars() {
        var vars = {};
        var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (m, key, value) {
            vars[key] = value;
        });
        return vars;
    }

    if (getUrlVars()["url"].indexOf("http") > -1) {
        var urlArray = getUrlVars()["url"].split('/');
        //var protocol = urlArray[0];
        var transferurl = urlArray[2];
    } else {
        var transferurl = getUrlVars()["url"];
    }

    $.ajax({
        type: "GET",
        url: "whitelist.aspx/isValidURL",
        data: {url:transferurl},
        contentType: "application/json; charset=utf-8",
        dataType: "json"
    }).done(function (data) {
        if (data) {
            //Redirect to the requested url because it was a valid url in the whitelist
            setTimeout(function () { window.location.assign(transferurl); }, 5000);
        } else {
            //Don't redirect to the requested url because it wasn't a valid url in the whitelist
        }
    }).fail(function () {
        //Don't redirect to the requested url because there was an error looking it up in the whitelist
    });
});
C#代码:

公共类白名单
{
[网络方法]
公共静态bool isvalidul(字符串requestedURL)
{
//创建包含所有“有效”URL的字符串列表
var whiteList=新列表();
//将URL添加到列表中
白名单添加(“www.google.com”);
foreach(白名单中的字符串validURL)
{
if(requestedURL==validURL)
{
返回true;
}
}
返回false;
}
}
  • 创建一个名为whitelist.ASPX的新ASPX页面,并将您的webmethod放入其中
  • stringify()
    使用您的参数并使用POST而不是GET:

        $.ajax({
            type: "POST",
            data: JSON.stringify({ requestedURL: transferurl }),
            ...
    
  • 返回值可能会被包装,在这种情况下,您将按如下方式访问它:

    .done(函数(数据){
    如果(数据d){
    ...
    }
    })


  • 非常感谢您这么快的回复,但是我仍然收到404(不是Fount)错误。我的ajax方法正在寻找的url如下:我也尝试了url:但也没有成功。我错过什么了吗?我需要一个控制器和路由器给我的.aspx页面一个url还是什么?谢谢您的帮助。@EmeraldArcher如果您使用的是MVC,那么您可以使用控制器操作而不是webmethod。我对MVC不是很熟练,所以如果这是你的情况,谷歌搜索应该会找到很多例子。:)谢谢滑溜的皮特,我会试试的。
        $.ajax({
            type: "POST",
            data: JSON.stringify({ requestedURL: transferurl }),
            ...