从母版页调用asmx web方法

本文关键字:web 方法 asmx 调用 母版页 | 更新日期: 2023-09-27 17:54:30

我的项目结构

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 error Not Found"

从母版页调用asmx web方法

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

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

您还忽略了SetTabsessionValueFailed中的错误,而只是显示一条消息,这对您调试它没有帮助。参见:如何处理来自AJAX调用的错误?

除此之外,请参阅:在新代码中不使用ASMX服务的更多理由