2

.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と、Web コールは機能しますが、Web サイトの残りの部分は機能しません。

何かアドバイス?

更新: コントローラーを使用するように変更しました。ブラウザーで 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'}",
4

2 に答える 2

3

ルーティングを使用しているため、これは MVC Web サイトだと思いますか? その場合ActionResultは、コントローラで の代わりに を使用する必要がありますWebMethod。これを試して:

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

次に、次の URL で jQuery を使用してこれを呼び出します。 http://localhost.com/[Controller]/HelloWorld

ここの例では、元の例のように文字列を返していることに注意してください。を使用して、JSON 経由でオブジェクトを返すこともできます。return Json(obj);

于 2013-01-07T14:54:46.040 に答える
1

WebMethods は に属しASP.NET WebForms、ルーティングは に属しASP.NET MVCます。2 つのテクノロジを混在させない方がよいでしょう。

この場合、ルーティングを削除した後にすべてが機能しなくなった場合、ほとんどのアプリケーションは ASP.NET MVC のように見えます。つまり、 を に置き換えたいということWebMethodですController Action

于 2013-01-07T14:53:57.377 に答える