jquery .net导致“无法找到资源”

本文关键字:资源 net 导致 jquery | 更新日期: 2023-09-27 17:50:57

我想在。net中做一个简单的ajax调用

任何建议吗?

[WebMethod]
public string HelloWorld()
{
    return "Hello World";
}

我在浏览器中像这样调用webmethod:http://localhost.com/Ajax/WebService1.asmx/HelloWorld

结果是

"找不到资源。"

可能是因为url的语法。

我的路由设置如下:

routes.IgnoreRoute("Ajax/");
        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

如果我删除MapRoute, webcall工作,但我的网站的其余部分失败。

任何建议吗?

更新:我改为使用控制器。当我在浏览器中使用url调用它时,我在控制器中遇到了断点。但是,当我运行这段代码时,就不是这样了:

    <div id="Result">
        Kig her!
    </div>

@section javascript {
    $(function () {
        $("#FirstReminder").datepicker();
        $("#EndDate").datepicker();
    });
$(document).ready(function() {
  // Add the page method call as an onclick handler for the div.
  $("#Result").click(function() {
    alert('kkk');
    $.ajax({
      type: "POST",
      url: "AjaxWorkflow/GetSteps",
      data: {workflowId: "1", workflowStep: "test"},
      contentType: "application/json; charset=utf-8",
      dataType: "json",
      success: function(msg) {
        // Replace the div's content with the page method's return.
        $("#Result").text(msg.d);
      }
    });
  });
});

更新2:我通过将这一行改为

来解决这个问题
          data: "{workflowId: '1', workflowStep: 'test'}",

jquery .net导致“无法找到资源”

因为你正在使用路由,我认为这是一个MVC网站?如果是这样,你应该在你的控制器中使用ActionResult而不是WebMethod。试试这个:

public string HelloWorld()
{
    return Content("Hello World");
}

您将使用jQuery调用以下URL: http://localhost.com/[Controller]/HelloWorld

注意,在这里的例子中,我返回一个字符串-根据您的原始示例。也可以通过JSON返回对象,使用return Json(obj);

WebMethods属于ASP.NET WebForms,路由属于ASP.NET MVC。你最好不要把这两种技术混在一起。

在这种情况下,大多数应用程序似乎是ASP。. NET MVC,如果删除路由后,一切都停止工作。这意味着您想要将WebMethod替换为Controller Action