【问题标题】:Ajax (calling web service) with MVC使用 MVC 的 Ajax(调用 Web 服务)
【发布时间】:2009-08-13 16:27:39
【问题描述】:

我有一个 asp.net mvc 应用程序,我需要在这个应用程序中使用 ajax,我需要添加一个脚本管理器并添加一个带有 Web 服务路径的服务引用,然后从标记调用 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 is undefined 那么我该如何解决这个问题呢? 我需要在 MVC 应用程序中进行特定配置来解决这个问题吗? 我已将 ajax 工具包 dll 添加到我的应用程序引用中,但问题仍然存在

提前致谢

【问题讨论】:

    标签: asp.net-mvc ajax web-services


    【解决方案1】:

    如果您想切换到 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;
        }
    

    【讨论】:

    • 把这个jquery代码放在哪里?我在代码中的哪个位置编写了视图的完整代码,您能告诉我在哪里放置此代码以调用 Web 服务吗?
    【解决方案2】:

    您是否尝试在 MVC.NET 页面中添加具有视图的控件?

    我认为 ScriptManager 需要采用 runat="server" 的形式。

    【讨论】:

    • 我将表单标签与 runat="server" 并没有工作
    【解决方案3】:

    感谢我在以下链接中找到问题解决方案的每一个人: 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>
    

    【讨论】:

    • 请说明该链接的哪一部分解决了您的问题,以便大家知道。
    • 希望这对 MVC ajax 或 nin MVC 中的每个新人都有用
    【解决方案4】:

    或者 - 您可以为此使用常规控制器操作。

    如果

    "foo/bar"

    路由配置为

    controller="foo", action="bar"

    然后

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

    用 jQuery 会调用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-27
      • 1970-01-01
      • 1970-01-01
      • 2011-02-19
      • 1970-01-01
      • 2013-06-06
      • 1970-01-01
      相关资源
      最近更新 更多