从母版页调用 asmx web 方法

Call asmx web method from master page

我的项目结构

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";
    }
}

它抛出调用失败。请帮助

编辑: 恐怕原因可能 因为我可以刷新整个页面(不知道为什么)。

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

 <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>

之前的类型是'submit'我改成了按钮。现在我收到“找不到 404 错误”。

问题是由于内容类型和数据类型,只需将它们从 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