【问题标题】:Call asmx web method from master page从母版页调用 asmx web 方法
【发布时间】:2015-06-09 14:15:52
【问题描述】:

我的项目结构

Web Dir
 - App_code
 - App_Data
 - DevFolder 
     - LiveFolder
         - Live.aspx
 - Dev.master
 - DevMasterEvents
     - masterservice.asmx

在母版页中,

 $.ajax({
            type: "POST",
            url: "DevMasterEvents/masterservice.asmx/HelloWorld",             
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: SetTabSessionValueSucceed,
            error: SetTabSessionValueFailed
        });

function SetTabSessionValueSucceed(result) {
        alert("text from server: " + result.d);
    }

function SetTabSessionValueFailed() {
        alert('call failed');
    }

masterservice.asmx 中的 Web 方法

[System.Web.Script.Services.ScriptService]
public class WebService1 : System.Web.Services.WebService
{

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

它抛出调用失败。请帮忙

编辑:恐怕原因可以https://stackoverflow.com/a/12621912/2922388,因为我可以刷新整个页面(不知道为什么)。

是的,这是我粗心的错误:(

 <span class="input-group-btn">
 <button type='button' name='search' id='search-btn' class="btn btn-flat"><i class="fa fa-search"></i></button>
 </span>

之前的类型是“提交”,我改为按钮。现在我收到“未找到 404 错误”。

【问题讨论】:

    标签: c# jquery asp.net web-services master-pages


    【解决方案1】:

    问题是由于内容类型和数据类型,只需将它们从 Ajax 请求中删除即可:

    $.ajax({
                type: "POST",
                url: "DevMasterEvents/masterservice.asmx/HelloWorld",             
                success: SetTabSessionValueSucceed,
                error: SetTabSessionValueFailed
            });
    

    您也忽略了SetTabsessionValueFailed 中的错误,而只是显示一条消息,这无助于您调试它。见:How do you handle errors from AJAX calls?

    除此之外,请参阅:More Reasons to Not use ASMX Services in New Code

    【讨论】:

    • 我仍然遇到同样的错误。当我尝试按照“如何处理来自 ajax 调用的错误”来调试错误时,它会抛出“请求状态:0 状态文本:错误未定义”
    • 我什至将 Web 服务转换为 wcf,仍然是同样的错误。但是当我单独调用 wcf 或 web 服务时,调试器会遇到方法上的断点
    • 我已经更新了我的问题,请查看并分享您的想法
    • @TechJerk,显示您发送 Ajax 请求的代码,看起来您也在触发一些服务器端事件。您在 aspx 代码中如何以及在何处调用 ajax?
    • @TechJerk,只要您的项目结构与您描述的一样,就不应该出现 404 错误。在浏览器中尝试http://localhost/DevMasterEvents/masterservice.asmx,看看你是否正在使用你的服务,如果你是从 Visual Studio 调试它,那么使用本地主机的端口号。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-07
    • 1970-01-01
    • 2013-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    相关资源
    最近更新 更多