在asp.net中使用ajax进行Web服务调用

时间:2015-06-10 15:13:28

标签: jquery asp.net ajax

我正在尝试使用jquery ajax来使用Web服务。调用webservice方法并传递参数,我想知道为什么ajax不会执行成功函数

这是我的ajax电话

<script type="text/javascript">
    function btn_add() {
        var a = $("#tb_a").val();
        var b = $("#tb_b").val();
        var c = $("#tb_c").val();
        var para = "a=" + a + "&b=" + b + "&c=" + c;

        $.ajax({
            type: "POST",
            url: "mywebservice.asmx/add",
            data: para,
            dataType: "text",
            success: function (res) {
                alert("success");
                console.log(res);
            }
        });
    }
</script>

修改

这是我的网络服务代码

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

        [WebMethod, ScriptMethod]
        public int add( int a, int b, int c)
        {
            return a + b + c;
        }
    }

2 个答案:

答案 0 :(得分:0)

你应该看看documentation,它说你的电话可能是这样的:

     $.ajax({
        type: "POST",
        url: "mywebservice.asmx/add",
        data: { a : $("#tb_a").val(), 
                b : $("#tb_b").val(),
                c : $("#tb_c").val() },
        success: function (res) {
            alert("success");
            console.log(res);
        }
    });

如果你的服务器中有这个:

public string myFunction(string a, string b, string c)
{
    return a + b + c;
}

现在,如果这不起作用,请看一下这个answer,这是完成你想要的不同方式

答案 1 :(得分:0)

您可能会收到404错误,请将其检查为您的控制台,因为您的add方法签名与您在ajax调用中发送的内容不匹配。 你可以试试这个

var aData=[];
    aData[0] = $("#tb_a").val();
    aData[1] = $("#tb_b").val();
    aData[2] = $("#tb_c").val();
    var jsonData = JSON.stringify({ aData:aData});
     $.ajax({
            type: "POST",
            url: "mywebservice.asmx/add", 
            data: jsonData,
            contentType: "application/json; charset=utf-8",
            dataType: "json", // dataType is json format
            success: OnSuccess,
            error: OnErrorCall
        });

    function OnSuccess(response){
     console.log(response.d);
    }

    function OnErrorCall(response){
     console.log(response.d);
    }
 [WebMethod, ScriptMethod]
  public int add(list<string> aData)
 {
     int cal=Convert.ToInt32(aData[0])+Convert.ToInt32(aData[1])+Convert.ToInt32(aData[2]);
    return cal;
 }

有关详细信息,请查看 Blog Article - jQuery Ajax JSON Example in Asp.net C#