c# - 使用Jquery

时间:2016-10-21 17:02:40

标签: javascript c# jquery ajax

晚上好, 我正在尝试在C#页面中进行AJAX调用,而我正在处理一些问题。

我的jQuery代码是:

$(document).ready(function () {
    $.ajax({
        type: "POST",
        url: "conteudo.aspx/GetNewPost",
        data: { ids: "<%=Request.QueryString["idconteudo"]%>" },
        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 (data) {
            alert("ok");
        }
    });
});

我的代码隐藏是:

[WebMethod]
    public static string GetNewPost(string ids)
    {
        // some code
        return ids;
    }

有人知道发生了什么事吗? PS:错误是Internal Server Error

enter image description here

3 个答案:

答案 0 :(得分:0)

尝试:

var idconteudo =&#34;&lt;%= Request.QueryString [&#34; idconteudo&#34;]%&gt;&#34;;

...
...
url:&#34; conteudo.aspx / GetNewPost&#34;,
数据:&#34; {ids:\&#34;&#34; + idconteudo +&#34; \&#34;&#34; }&#34 ;,
contentType:&#39; application / json;字符集= UTF-8&#39 ;,
...
...

答案 1 :(得分:0)

请使用以下代码

因为您使用查询字符串中的文本数据类型,所以您可以将数据类型设为text

$(document)
        .ready(function () {
            var q = "<%=Request.QueryString["idconteudo"]%>";
            alert(q);// just to check the value
            // assuming that you had passed query string value

            $.ajax({
                type: "POST",
                url: "conteudo.aspx/GetNewPost",
                data: { "ids": q },
                //contentType: 'application/json; charset=utf-8',
                dataType: 'text',// data type should be text
                error: function(XMLHttpRequest, textStatus, errorThrown) {
                    alert("Request: " +
                        XMLHttpRequest.toString() +
                        "\n\nStatus: " +
                        textStatus +
                        "\n\nError: " +
                        errorThrown);
                },
                success: function(data) {
                    alert("ok");
                }
            });
        });

编辑1 :如果Web方法位于ASPX页面上,您应使用以下代码,以便获得Json格式的结果

$(document)
        .ready(function () {
            var q = "<%=Request.QueryString["idconteudo"]%>";
            //alert(q);
            // just to check the value
            // assuming that you had passed query string value

            $.ajax({
                type: "POST",
                url: "conteudo.aspx/GetNewPost",
                data: '{ids: "' + q + '" }',
                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("ok" + result.d);
                }
            });
        });

答案 2 :(得分:-1)

根据您发布的内容,我发现有两件事是不正确的,另外一件事可能没有在您的问题中发布,但事实上它确实存在于您的真实来源中。

1)您的data写错了。它应该是:

$(document).ready(function () {
    var test = "<%=Request.QueryString["idconteudo"]%>";
    $.ajax({
        type: "POST",
        url: "conteudo.aspx/GetNewPost",
        data: { 'ids' : test }, // the ids needs to have quotes to be correct syntax
        dataType: 'text',
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            alert("Request: " + XMLHttpRequest.toString() + "\n\nStatus: " + textStatus + "\n\nError: " + errorThrown);
        },
        success: function (data) {
            alert("ok");
        }
    });
});

2)你说它是POST,但你的方法没有用[HttpPost]注释装饰。

3)您的dataType设置为'json',但您的方法返回string ..因此'json'应更改为'text'

希望这有帮助!