调用服务器端方法不起作用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(未找到)
从您的问题中不清楚您使用的是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