从母版页调用asmx web方法

时间:2015-06-09 14:15:53

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

我的项目结构

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>

早期的类型是“提交”#39;我换成了按钮。现在我收到&#34; 404错误未找到&#34;

1 个答案:

答案 0 :(得分:2)

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

a:hover,
button:hover,
input[type="button"] {
  cursor: wait;
}

此外,您忽略了$.ajax({ type: "POST", url: "DevMasterEvents/masterservice.asmx/HelloWorld", success: SetTabSessionValueSucceed, error: SetTabSessionValueFailed }); 中的错误,而只是显示一条消息,这对您的调试没有帮助。请参阅:How do you handle errors from AJAX calls?

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