简体   繁体   中英

c# - Problems during AJAX call with Jquery

Good evening, I'm trying to do a AJAX call in a C# page and I'm dealing with some problems.

My jQuery code is:

$(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");
        }
    });
});

And my code-behind is:

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

Does someone know what is going on? PS: The error is Internal Server Error .

在此处输入图片说明

try:

var idconteudo = "<%=Request.QueryString["idconteudo"]%>";

...
...
url: "conteudo.aspx/GetNewPost",
data: "{ids: \\"" + idconteudo + "\\"" }",
contentType: 'application/json; charset=utf-8',
...
...

Please use code as below

Because you are using text data type from query string, you can make datatype as 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");
                }
            });
        });

Edit 1 : If the Web Method is on ASPX page, you shall use below code, so that you get result in Json format

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

From what you have given us with your post, I see two things that are incorrect and one other thing that may have just not been posted in your question, but it is in fact in your real source.

1) Your data is written wrong. It should be:

$(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) You say it's a POST but your method isn't decorated with the [HttpPost] Annotation.

3) Your dataType is set to 'json' but your method is returning a string .. so 'json' should be changed to 'text' .

Hope this helps!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM