jQuery Ajax Codebehind Post是“OK”但不起作用

时间:2015-02-20 09:15:17

标签: javascript jquery asp.net ajax json

我尝试通过jQuery Ajax在ASP.NET中调用函数,如下所示:

var params = "{'name':" + "\"" + name + "\"}";
            $.ajax({
            type: "POST",
            url: "CreateTopic.aspx/CreateNewTopic",
            data: params,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (result) {

            },
            failure: function (response) {
                alert("Failed to send : " + response);
            }
        });

我收到[HTTP / 1.1 500内部服务器错误]。

如果我这样做:

        var params = "{'name':" + "\"" + name + "\"}";
        $.post("CreateTopic.aspx/CreateNewTopic", params);

我得到:[HTTP / 1.1 200 OK]

但是我在这里调试了调试点:

    [System.Web.Services.WebMethod]
    public static object CreateNewTopic(string name)
    {
        return PrivateTopic.createNewTopic(name, 1);
    }

未到达。

2 个答案:

答案 0 :(得分:0)

你不会相信,但答案是:

将目标框架更改为.NET 4.0

此代码有效:

            var params = "{'name':" + "\"" + name + "\"}";
        $.ajax({
            type: "POST",
            url: "CreateTopic.aspx/CreateNewTopic",
            data: params,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (result) {
                alert("Topic " + name + " wurde erfolgreich gespeichert.");
            },
            failure: function (response) {
                alert("Failed to send : " + response);
            }
        });

答案 1 :(得分:0)

您的数据属性应为{'name':“+”\“”+ name +“\”} 不是“{'name':”+“\”“+ name +”\“}”,前者是一个对象,而后者是一个无效的查询参数字符串。 更好的是,只需尝试下面的行而不是使用'params'变量。

        $.ajax({
        type: "POST",
        url: "CreateTopic.aspx/CreateNewTopic",
        data: {'name':" + "\"" + name + "\"},
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (result) {

        },
        failure: function (response) {
            alert("Failed to send : " + response);
        }
    });