2009-08-13 171 views
0

我有一個asp.net mvc應用程序,我需要在這個應用程序中使用ajax,我需要添加一個scriptmanager並添加一個服務refrences與一個web服務的路徑,然後從標記調用Web服務。 我有下面的代碼,並沒有看到Web服務:使用MVC的Ajax(調用Web服務)

<form> 
<input id="SubmitBtn" type="button" value="Sumbit" onclick="TestService(); return false;" /> 
    <asp:ScriptManager ID="ScriptManager1" runat="server"> 
    <Services> 
     <asp:ServiceReference Path="~/MVCService.asmx" /> 
    </Services> 
    </asp:ScriptManager> 
<script type="text/javascript" language="javascript"> 
    function TestService() 
    { 
     alert('Welcome'); 
     var ret = MVCService.HelloWorld(OnCheckComplete,OnFailed,OnTimeOut); 
    } 
    function OnCheckComplete(arg) 
    { 
     alert(arg); 
    } 
    function OnFailed(arg) 
    { 
     alert(arg); 
    } 
    function OnTimeOut(arg) 
    { 
     alert(arg); 
    } 
    </script> 
</form> 

它報告錯誤說:MVCService是未定義 所以我怎樣才能解決這個問題? 我需要MVC應用程序中的特定配置來解決這個問題嗎? 我有Ajax工具包DLL添加到我的應用程序refrences,但問題仍然存在提前

回答

1

感謝每一個我已經找到了soltuion用於在folloiwng鏈接的問題: Ajax with asp.net mvc

以下部分解決我的問題:

<script type="text/javascript" src="../../Content/MicrosoftAjax.debug.js"></script> 
<script type="text/javascript"> 
function TestService() 
{ 
    Sys.Net.WebServiceProxy.invoke("../../Services/MVCService.asmx","HellowWord", false,null, success, fail); 
} 
</script> 
+0

請說出該鏈接的哪一部分解決了你的問題,所以每個人都會知道。 – 2009-08-16 12:43:40

+0

希望這對MVC ajax或nin MVC中的每一個新用戶都是有用的 – Ahmy 2009-08-16 14:38:39

+0

+1來編輯它。謝謝。 – 2009-08-16 16:21:44

2

只是把jQuery的解決方案在那裏,如果你想切換到jQuery的

感謝:

function TestService() 
{ 
    alert('Welcome'); 

    $.ajax({ 
     url: "MVCService.asmx/HelloWorld", 
     data: "{}", 
     type: "POST", 
     contentType: "application/json; charset=utf-8", 
     processData: false, 
     dataType: "json" 
     success: function(msg) { 
      alert(msg.d); 
     } 
    }); 
} 

取確定你有

using System.Web.Script.Services; 
    [ScriptService] 
public class MVCService : WebService 
{ 
    [WebMethod] 
    [ScriptMethod] 
    public DateTime HelloWorld() 
    { 
     return DateTime.Now; 
    } 
+0

在哪裏把這個jQuery代碼?在我的代碼中的哪個地方,我已經寫了視圖的完整代碼,所以你可以告訴我在哪裏pu代碼以調用web服務? – Ahmy 2009-08-16 08:09:27

0

或者 - 你可以使用一個常規的控制器操作。

如果

「富/欄」

路由被配置成

控制器= 「foo」 的,動作= 「欄中的」

然後

$.get("foo/bar", data, callback, "html") 

用jQuery會調用它。

1

您是否試圖在MVC.NET頁面中添加具有viewsate的控件?

ScriptManager需要在形式runat =「服務器」我認爲。

+0

我把形式標籤runat =「server」而不工作 – Ahmy 2009-08-16 07:59:46