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

本文关键字:代码 数据 AJAX | 更新日期: 2023-09-27 18:12:09

我试图使用AJAX代码将一些特定的数据传递给C#代码,但未能成功。我尝试过使用纯文本数据类型和json格式,但它们都不适用。

当我尝试使用json方法发送数据时,出现了以下错误:

内部服务器错误

当使用text方法时,没有出现错误,代码通过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代码,它运行得很好,但我不知道错误在哪里,所以有什么建议吗?

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

像这样替换代码

.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";
    }

和应用程序启动

 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);
        }
    }

在您的客户端:

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....
}