调用服务器端方法不起作用404找不到

本文关键字:找不到 不起作用 方法 服务器端 调用 | 更新日期: 2023-09-27 18:21:58

在我的项目(解决方案->项目->模型->服务器.cs)下的一个名为Models的文件夹中,我有一个称为server的类

我有一个简单的按钮,当点击时,我想调用我的服务器端方法并获得返回的字符串。。

我得到错误404(未找到)。我尝试了几种不同的网址,但似乎不起作用。。

index.html:

<body>
<h1>Weeelcome</h1>
<button type="button" id="btnName" style="width: 100px; height: 50px;">Get My Name</button>
<p ID="lblTest"></p>
</body>

我的js:

$(document).ready(function () {
$("#btnName").click(function () {
    $.ajax({
        url: "../../Models/GetMyName",
        type: "GET",
        success: function (result) {
            alert(result);
        },
        error: function (ex) {
            //alert("Error");
        }
    });
});
});

服务器.cs

public class Server
{
    [WebMethod]
    public static string GetMyName()
    {
        return "MyName";
    }
}

错误

得到http://localhost:50603/Models/GetMyName404(未找到)

调用服务器端方法不起作用404找不到

从您的问题中不清楚您使用的是ASP.NET MVC?因为在这种情况下,index.html假设是index.cshtml

其次,如果您使用的是asp.net mvc,我相信您是在尝试访问模型而不是控制器。您提供了错误的路径(使用文件或位置路径),而您需要提供服务器路径/服务器路径/操作路径

第三个错误是非静态类服务器.cs具有静态功能

第四,如果您在后台使用web服务(asmx),并使用html页面与您的web服务进行通信,则解决方案如下所述,

您需要将Server.cs中的GetMyName方法声明为Gets或设置一个值,该值指示是否使用HTTP GET调用该方法。

   [WebMethod]
   [ScriptMethod(UseHttpGet = true)]

参考:https://msdn.microsoft.com/en-us/library/system.web.script.services.scriptmethodattribute.usehttpget(v=vs.110).aspx

我不能测试这个代码,但我相信这将为你工作

index.html

<head>
 <script>
    var __appBasePath = 'http://yourserver.com/';
 <script>
</head>
<body>
<h1>Weeelcome</h1>
 <button type="button" id="btnName" style="width: 100px; height: 50px;">Get My Name</button>
<p ID="lblTest"></p>
</body>

您的JS

$(document).ready(function () {
$("#btnName").click(function () {
    $.ajax({
        url:  __appBasePath  + "Server/GetMyName",
        type: "GET",
        success: function (result) {
            alert(result);
        },
        error: function (ex) {
            //alert("Error");
        }
    });
   });
});

您的Server.cs(如果是Web服务)注意:非静态类不能有静态方法:因此删除静态

public class Server
{
   [WebMethod]
   [ScriptMethod(UseHttpGet = true)]
   public string GetMyName()
   {
       return "MyName";
   }
}

如果您正在使用ASP.NET MVC控制器或Web API:

若您使用的是asp.net MVC,那个么您所做的错误就是试图调用您在模型中定义的函数。正如我所看到的,你已经提到(解决方案->项目->模型->服务器.cs)如果你使用asp.net MVC/Web API,那么只需在控制器操作中使用[HttpGET]。即

型号.cs

public class ServerModel
{
   public string GetMyName()
   {
       return "MyName";
   }
}

MVC控制器的情况下:

public class ServerController : Controller
{
   public JsonResult GetMyName()
   {
       ServerModel model = new ServerModel();
       var name = model.GetMyName;
       return Json(name, JsonRequestBehavior.AllowGet);
   }
}

您只需要在ServerController类中将Controller替换为ApiController,以防您使用Asp.netmvc web api。

如果是WebAPI替换:

public class ServerController : Controller

带有

public class ServerController : ApiController