服务器端方法未被调用

时间:2013-10-25 21:51:37

标签: javascript jquery ajax

从下面的javascript代码我试图调用服务器端方法,但没有调用serververside方法。我正在使用jquery,ajax

<script type="text/javascript" src="JquryLib.js"></script>
<script type="text/javascript" language="javascript">
    function fnPopulateCities() {
        debugger;
        var State = $("#ddlState").val();
        GetCities(State);
        return false;
    }
    function GetCities(StateId) {
        debugger;
        var v1 = 'StateId: ' + StateId;
        $.ajax(
     {
         type: "POST",
         url: 'DropDownList_Cascade.aspx/PopulateCities',
         data: '{' + v1 + '}',
         contentType: "application/json; charset=utf-8",
         dataType: "json",
         success: function (result) {
             if (result.status === "OK") {
                 alert('Success!!');
             }
             else {
                 fnDisplayCities(result);
             }
         },
         error: function (req, status, error) {
             alert("Sorry! Not able to retrieve cities");
         }
     });
 }
</script>

这是我需要调用的服务器端方法。

private static ArrayList PopulateCities(int StateId)
{
    //this code returns Cities ArrayList from database.
}

它给我以下错误:500(内部服务器错误)

我无法弄清楚出了什么问题。请帮忙!

堆栈追踪:

[ArgumentException:未知的Web方法PopulateCities.Parameter name:methodName]

2 个答案:

答案 0 :(得分:0)

使用此脚本

function GetCities(StateId) {
        debugger;
        var v1 = "{'StateId': '" + StateId+"'}";
        $.ajax({
         type: "POST",
         url: 'DropDownList_Cascade.aspx/PopulateCities',
         data: v1,
         contentType: "application/json; charset=utf-8",
         dataType: "json",
         success: function (result) {
             if (result.status === "OK") {
                 alert('Success!!');
             }
             else {
                 fnDisplayCities(result);
             }
         },
         error: function (req, status, error) {
             alert("Sorry! Not able to retrieve cities");
         }
     });
 }

并修改Code Behind

[System.Web.Services.WebMethod]
public static ArrayList PopulateCities(int StateId)
{
    //this code returns Cities ArrayList from database.
}

答案 1 :(得分:0)

使用此脚本:

function fnPopulateCities() {
            debugger;
            var State = $("#ddlState").val();
            GetCities(State);
            return false;
        }
        function GetCities(StateId) {
            debugger;

            var data = {
                'StateId': StateId
            };

            $.ajax({
                type: "POST",
                url: 'DropDownList_Cascade.aspx/PopulateCities',
                data: JSON.stringify(data), // using from JSON.stringify is much better than to try stringify data manually
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (result) {
                    if (result.status === "OK") {
                        alert('Success!!');
                    }
                    else {
                        fnDisplayCities(result);
                    }
                },
                error: function (req, status, error) {
                    alert("Sorry! Not able to retrieve cities");
                }
            });
        }

以及代码背后的代码:

    [System.Web.Services.WebMethod]
    public static ArrayList PopulateCities(int StateId)
    {
        //this code returns Cities ArrayList from database.
    }