无法使用AJAX将数据传递给c#代码

时间:2016-10-09 10:53:13

标签: javascript c# jquery json ajax

我正在尝试使用AJAX代码将一些特定数据传递给C#代码隐藏,但无法实现它。我尝试过使用纯文本数据类型和json格式,但它们都不适用于我。

当我尝试使用json方法发送数据时发生以下错误:

  

内部服务器错误

使用文本方法时,没有出现错误,代码来自success函数,但实际上数据永远不会发送到代码隐藏类的方法

这是使用json格式的ajax代码:

function searchClicked(sCriterion) {
$.ajax({
    type: "POST",
    url: "TokenRegistration.aspx/GetSearchCritetrion",
    data: "{creiterion : " + sCriterion + " }",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    error: function (XMLHttpRequest, textStatus, errorThrown) {
        alert("Request: " + XMLHttpRequest.toString() + "\n\nStatus: " + textStatus + "\n\nError: " + errorThrown);
    },
    success: function (result) {
        alert("We returned: " + result);
    }
});

}

这是使用文本格式的ajax代码:

function searchClicked(sCriterion) {
    $.ajax({
        type: "POST",
        url: "TokenRegistration.aspx/GetSearchCritetrion",
        data: sCriterion,
        contentType: "application/text; charset=utf-8",
        dataType: "text",
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            alert("Request: " + XMLHttpRequest.toString() + "\n\nStatus: " + textStatus + "\n\nError: " + errorThrown);
        },
        success: function (result) {
            alert("We returned: " + result);
        }
    });
}

此处还有我的代码隐藏方法,应该将数据发送到:

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public void GetSearchCritetrion(object selectedItem)
{
    var json = new JavaScriptSerializer();
    var data = json.Deserialize<Dictionary<string, Dictionary<string, string>>[]>(selectedItem.ToString());
}

我在另一个项目中使用了完全相同的ajax代码并且它工作得很好,但是在这里我没有得到错误的位置,所以有什么建议吗?

2 个答案:

答案 0 :(得分:0)

像这样替换你的代码

的.aspx

<script>
        $(function () {
            function searchClicked(sCriterion) {
                $.ajax({
                    type: "POST",
                    url: "Default.aspx/GetSearchCritetrion",
                    data: "{creiterion : " + sCriterion + " }",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    error: function (XMLHttpRequest, textStatus, errorThrown) {
                        alert("Request: " + XMLHttpRequest.toString() + "\n\nStatus: " + textStatus + "\n\nError: " + errorThrown);
                    },
                    success: function (result) {
                        alert("We returned: " + result);
                    }
                });
            }

            searchClicked("1");


        });

        </script>

和.cs文件

[WebMethod]
    public static String GetSearchCritetrion(String creiterion)
    {
        return "ok";
    }

和App_Start

 public static class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            var settings = new FriendlyUrlSettings();
            settings.AutoRedirectMode = RedirectMode.Off;//Its may cause the error
            routes.EnableFriendlyUrls(settings);
        }
    }

答案 1 :(得分:0)

在您的客户端:

function searchClicked(sCriterion) {
    //display the parameter
    console.log(sCriterion);

    if(sCriterion != "" || sCriterion != null)
    {
        var param= {
            "selectedItem" : sCriterion 
         };

        $.ajax({
            type: "POST",
            url: "TokenRegistration.aspx/GetSearchCritetrion",
            data: param,
            success: function(result) {
              alert("We returned: " + result);
             },
             error: function(error){
                 console.log(error);
             }
        });
    }
    else
    {
        alert("No values!!");
    }
}

服务器端:

[WebMethod]
public void GetSearchCritetrion(string selectedItem)
{
    //add a breakpoint here....

}