【问题标题】:Not sure why my AJAX call doesn't populate data in webforms不知道为什么我的 AJAX 调用没有在网络表单中填充数据
【发布时间】:2017-12-30 14:43:29
【问题描述】:

当页面准备好时,我希望它调用函数 BindGridView,该函数将填充 GridView 中的数据。我不知道为什么它不会进入 Ajax 中的“成功”部分。我在另一个 ajax 调用中做类似的事情,它工作正常。我几乎完全按照教程进行了操作。我收到 500(内部服务器错误)。

protected void Page_Load(object sender, EventArgs e)
        {
            BindDummyItem();
        }

        public void BindDummyItem()
        {
            DataTable dtGetData = new DataTable();
            dtGetData.Columns.Add("ID");
            dtGetData.Columns.Add("ServerName");;
            dtGetData.Columns.Add("Command");
            dtGetData.Columns.Add("CreateDate");
            dtGetData.Rows.Add();

            GridView1.DataSource = dtGetData;
            GridView1.DataBind();
        }

[WebMethod]
        public static sObj[] test()
        {
            string cs = ConfigurationManager.ConnectionStrings["asdasd"].ConnectionString;
            SqlConnection con = new SqlConnection(cs);
            DataTable dataTable = new DataTable();
            List<s> sl = new List<s>();
            try
            {
                SqlDataAdapter da = new SqlDataAdapter("stredP", con);
                da.SelectCommand.CommandType = CommandType.StoredProcedure;
                da.SelectCommand.Parameters.Add(new SqlParameter("@StarteDate", "2017-07-24 19:20:00"));
                da.SelectCommand.Parameters.Add(new SqlParameter("@EndDate", "2017-07-24 19:21:00"));

                da.Fill(dataTable);

                foreach (DataRow dtRow in dataTable.Rows)
                {
                    sObj DataObj = new sObj();
                    DataObj.ID = Convert.ToInt64(dtRow["ID"]);
                    DataObj.ServerName = dtRow["ServerName"].ToString();
                    DataObj.Command = dtRow["Command"].ToString();
                    DataObj.CreateDate = Convert.ToDateTime(dtRow["CreateDate"]);
                    sl.Add(DataObj);
                }
            }
            catch (Exception ex)
            {
                //TODO
            }
            finally
            {
                con.Close();
            }
            return sl.ToArray();
        }

.aspx 中的代码

<script>
    $(document).ready(function () {
        BindGridView();
    });

    function BindGridView() {
        $.ajax({
            type: "POST",
            url: "ProjectName.aspx/test",
            contentType: "application/json;charset=utf-8",
            data: {},
            dataType: "json",
            success: function (data) {
                console.log("dfgdgdfgdfg");
                $("#GridView1").empty();

                if (data.d.length > 0) {

                    for (var i = 0; i < data.d.length; i++) {

                        $("#GridView1").append("<tr><td>" + 
                        data.d[i].ID + "</td> <td>" +
                        data.d[i].ServerName + "</td> <td>" +
                        data.d[i].Command + "</td></tr>" +
                        data.d[i].CreateDate + "</td></tr>");
                    }
                }
            },
            error: function (result) {
                //alert("Error login");

            }
        });
    }

【问题讨论】:

  • 您是否尝试在后端记录错误,可能在您的 catch 块中?
  • @TimSmojver 我发现我要序列化的字符串大于它可以处理的字符串(100kbs)。
  • @jss 这是抛出哪一行代码?
  • @TimSmojver 我在错误中打印出错误消息:函数(结果){}。我用更少的数据尝试了相同的代码,它可以工作。

标签: javascript c# jquery ajax webforms


【解决方案1】:

在 Web.Config 中设置这个会增加长度:

<system.web.extensions>
    <scripting>
      <webServices>
          <jsonSerialization maxJsonLength="2147483647"/>
      </webServices>
    </scripting>
</system.web.extensions>

基于此:

https://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.maxjsonlength(v=vs.110).aspx

【讨论】:

    猜你喜欢
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-21
    相关资源
    最近更新 更多