ajax函数没有在C#中返回数据

时间:2015-03-19 09:59:00

标签: javascript c# jquery asp.net ajax

我正在尝试创建跨域ajax脚本,但我很难解决为什么ajax函数在表id中输出 undefined而不是正确的动态数据。

    $(document).ready(function () {
    $.support.cors = true;
    $.ajax({
        type: "Post",
        crossDomain: true,
        contentType: "application/json; charset=utf-8",
        url: "http://localhost:27335/test2.aspx/BindDatatable",
        data: "{}",
        dataType: "json",
        success: function (data) {
            console.log(data)
            for (var i = 0; i < data.d.length; i++) {
                $("#tbDetails").append("<tr><td>" + data.d[i].Name+ "</td><td>" + data.d[i].Loan + "</td><td>" + data.d[i].Evnt + "</td></tr>");
            }
        },
        error: function (result) {
            alert("Error");
        }
    });
});

提前感谢您的任何帮助。

2 个答案:

答案 0 :(得分:2)

按照以下步骤

1.Debug你的方法BindDatatable()

2.在return serializer.Serialize(details);你有没有结果?

  1. 如果是,则在代码中写下以下行。
  2. 如果没有,则用不同的序列化器序列化,例如Newtonsoft。您可以在Convert JSON String To C# Object

    找到更多详细信息

    &#13;
    &#13;
    $(document).ready(function () {
        $.support.cors = true;
        $.ajax({
            type: "Post",
            crossDomain: true,
            contentType: "application/json; charset=utf-8",
            url: "http://localhost:27335/test2.aspx/BindDatatable",
            data: "{}",
            dataType: "json",
            success: function (data) {
                alert(data.toSource()) ; 
                console.log(data);
                for (var i = 0; i < data.d.length; i++) {
                    $("#tbDetails").append("<tr><td>" + data.d[i].Name+ "</td><td>" + data.d[i].Loan + "</td><td>" + data.d[i].Evnt + "</td></tr>");
                }
            },
            error: function (result) {
                alert("Error");
            }
        });
    });
    &#13;
    &#13;
    &#13;

    此行警告(data.toSource())

    1. 如果你有任何json,那么在jsonlint.com验证你的json。如果已经过验证,那么请确保它符合要求并且也可以解析。
    2. &#13;
      &#13;
      var parsedData = $.parseJSON(data);
      &#13;
      &#13;
      &#13;

      1. 它会起作用。

答案 1 :(得分:1)

您的Webmethod BindDatatable()会返回JSON格式的数据。 您需要在使用之前解析它。

你可以这样做:

你的Ajax帖子就像:

$.ajax({
    type: "Post",
    crossDomain: true,
    contentType: "application/json; charset=utf-8",
    url: "http://localhost:27335/test2.aspx/BindDatatable",
    data: "{}",
    dataType: "json",
    success: function (data) {
        console.log(data)
        var parsedData=$.parseJSON(data);
        for (var i = 0; i < parsedData.d.length; i++) {
            $("#tbDetails").append("<tr><td>" + parsedData.d[i].Name+ "</td><td>" + parsedData.d[i].Loan + "</td><td>" + parsedData.d[i].Evnt + "</td></tr>");
        }
    },
    error: function (result) {
        alert("Error");
    }
});

这里我使用了 parsedData 。而不是数据。 你可以看看..

希望这会有所帮助!!