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