使用来自webmethod ASP.net的ajax检索数据

时间:2012-05-12 13:14:56

标签: asp.net ajax json

我知道我的问题非常基本,但不知怎的,我的代码无效。 我正在尝试更新文本框文本更改的标签值。下面是我在aspx页面上编写的javascript代码示例。

function UpdateDescription(ControlID) {//debugger;
    ControlID = "ctl00_CP_" + ControlID;
    UPCCode = document.getElementById(ControlID).value;
    //alert(UPCCode);
    $.ajax({ type: "POST",                    
        url:"ProductPhotoRequisitions.aspx/GetUPCJSon",
        //data: "{UPC:" + UPCCode + "}",
        data: "UPC=" + UPCCode,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {alert(data.d);} 
    }); 
}

我在同一页面的代码隐藏中编写web方法,但不知道这个函数没有被调用。

[WebMethod]
public string GetUPCJSon(String UPC) 
{ 
    //code to fetch label value
}

3 个答案:

答案 0 :(得分:0)

WebMethod必须声明为static,并且必须使用[WebMethod]属性进行修饰。

[WebMethod]
public static string GetUPCJSon(String UPC) 
{ 
   //code to fetch label value
}

因为内容类型json发送参数为jsonobject

$.ajax({ type: "POST",                    
        url:"ProductPhotoRequisitions.aspx/GetUPCJSon",
        data: "{UPC:'" + UPCCode + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {alert(data.d);} 
    }); 

答案 1 :(得分:0)

如果你的javascript没问题,如果你唯一的问题是没有被调用的方法你应该尝试使用它,方法应该是静态的

 [WebMethod]
 public static string GetUPCJSon(String UPC) 
 { 
    //code to fetch label value
 }

答案 2 :(得分:0)

感谢您的回复。静态是一个问题,但主要问题是没有为参数提供单引号。应该是

 $.ajax({ type: "POST",                    
        url:"ProductPhotoRequisitions.aspx/GetUPCJSon",
        data: "{'UPC':'" + UPCCode + "'}",
                contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {alert(data.d);} 
    });