从外部javascript文件调用c#logic

call c# logic from external javascript file

本问题已经有最佳答案,请猛点这里访问。

我是javascript的新手,我有一个问题,我有一个外部的js文件,我需要运行一些c#服务器端代码。 我的外部js文件是这样的:

1
2
3
4
5
6
7
8
9
10
my.login = function(parameter, callback) {
    if(someCondition)
    {
        alert("you cant progress")
    }
    else
    {
        //not importent logic
    }
}

我考虑了两种使用ajax调用准备其中一个条件的方法:

1
2
3
4
$.get("locallhost:2756/myCont/MyAct?Id=" + Id +"", function(response) {
    if (!response.result) {
        alert("you cant progress");
    }

但我得到错误$未定义
另一种选择是使用XmlHttpRequest,如下所示:

1
2
3
4
5
6
var xhReq = new XMLHttpRequest();
xhReq.open("POST","locallhost:2756/myCont/MyAct?Id=" + Id +"", true);
xhReq.send(Id);
var res = xhReq.response;
var stat= XMLHttpRequest.status;
var resText= xhReq.responseText;

但我在resText中得不到任何东西",
我的控制器和动作也是这样的:

1
2
3
4
5
6
7
8
9
10
11
12
13
public class myContController : Controller
{      

    [HttpPost]
    public JsonResult MyAct(string Id)
    {
        if (Logic.ValidateId(Id))
        {
            return Json(new { result = true });
        };
        return Json(new { result = false });
    }
}

我想要的只是在c#中验证一些东西并返回结果,如果它没关系到javascript,如果有另一种方式,你能帮我吗?

编辑:
我知道我可以在html文件中引用jquery以避免$ not defined但是这是其他人可以使用的外部js,它们不在我的项目中。 我需要用外部的js做点什么


你缺少jquery参考文件从下面的链接下载并在你的html文件中引用它。 在src中,您需要编写jquery.min.js文件的路径。 如果它与你的html文件在同一文件夹中使用下面的代码

1
   <script src="jquery.min.js">

链接:http://jquery.com/download/


您可以在没有jQuery的情况下执行AJAX请求。 您只需要修复XMLHttpRequest用法:

1
2
3
4
5
6
7
8
9
10
11
12
13
function reqListener() {
    console.log(this.responseText);
};

function errListener() {
    console.log(this.responseText);
};

var xhReq = new XMLHttpRequest();
xhReq.addEventListener("load", reqListener);
xhReq.addEventListener("error", errListener); // this works for errors
xhReq.open("POST","locallhost:2756/myCont/MyAct?Id=" + Id +"", true);
xhReq.send(Id);

您还可以添加其他回调。

您可以在MDN上找到更多示例。