2013-01-07 46 views
2

我正在嘗試做一個簡單的阿賈克斯調用.netajax jquery .net結果在「無法找到資源」。

任何意見?

[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'}", 

回答

3

因爲您使用的是路由,我認爲這是一個MVC網站?如果是這樣,你應該在你的控制器中使用ActionResult而不是WebMethod。試試這個:

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

你會那麼以下網址使用jQuery稱之爲:http://localhost.com/[Controller]/HelloWorld

注意,在這裏的例子,我返回一個字符串 - 按你原來的例子。也可以通過JSON返回一個對象,使用return Json(obj);

+0

謝謝,解決了這個問題,但我不確定我的jQuery代碼是否可以調用控制器 – Anders

+0

@Anders它可以 - 與任何錨都一樣。另外,如果有幫助,不要忘記接受這個答案。 –

+0

它解決了它,所以非常感謝:-) – Anders

1

的WebMethods屬於ASP.NET WebForms而路由屬於ASP.NET MVC。你最好不要混用這兩種技術。

在這種情況下,大多數應用程序似乎是ASP.NET MVC,如果刪除路由後一切都停止工作。這意味着你想用Controller Action代替WebMethod

+0

謝謝。用一個新問題更新我的答案:-) – Anders