有人知道是否可以使用jquery/ajax在同一解决方案内的另一个项目中调用c#(或任何其他。net)函数?
假设解决方案的名称是exampleesolution,我从中调用目标函数的项目的名称是project。源,目标项目的名称为project。目标,目标函数名称为TargetFunction()
。
我已经尝试在Project.Source
中遵循.js file
:
$.ajax({
url: '/ExampleSolution/Project.Target/TargetFunction',
type: 'get',
success: function (data) {
$(document.body).append(data);
}
});
然后我用几种方法修改了url行,但从未成功。
你有什么建议吗?
谢谢大家这么快的回答。
我找到了一个解决这个问题的方法,我想和大家分享一下,以防将来有人遇到同样的问题。
在.js文件中,在我调用$。ajax函数我创建了一个变量与窗口的帮助。将url指向正在运行的目标项目的target函数的位置,并在ajax函数中使用该变量。所以你不会指向另一个项目。您指向正在运行的项目的url。
听起来很简单。
解如下:
var url = window.location = 'http://localhost:13105/TargetFunction';
$.ajax({
url: url,
type: 'get',
success: function (data) {
$(document.body).append(data);
}
});
});
你只能在代码后面调用函数,因为它们已经被web服务器注册了。
如果你想让一个函数可以在代码之外访问,它需要注册为ASMX或WCF服务。
请参见创建和消费您的第一个WCF服务。
一旦设置好并运行,就可以使用Ajax调用方法,就像在后面的代码中一样。
$.ajax({
//Path to WCF Server and Target Method
url: "http://localhost:PORT/wcfsvc/FooService.svc/Foo",
type: 'get',
contentType: 'application/json; charset=utf-8',
success: function (data) {
$(document.body).append(data);
}
});
参见:以JSON形式从jQuery中消费WCF
简短的回答是"不,这是不可能的。"前端代码(如jQuery和AJAX)在客户端机器上运行,但c#函数是后端,在服务器上运行。他们之间没有直接的联系。
更长的答案是"不直接,但有办法做类似的事情。"最简单的选择是使用AJAX将POST发送到服务器上的另一个控制器/操作,然后处理响应。这是接近你正在做的,但你有点偏离。而不是url是一个函数,url必须是你网站上的一个实际的url。以/Functions/CallTargetFunction
为例,然后创建如下所示的控制器:
public class FunctionsController : Controller
{
public ActionResult CallTargetFunction()
{
return Content(TargetFunction());
}
}
注意,这样做意味着任何访问http://yoursite.com/Functions/CallTargetFunction
的都将得到该函数的结果。