【问题标题】:How can I format AJAX data for a SelectList in WebForms?如何在 WebForms 中为 SelectList 格式化 AJAX 数据?
【发布时间】:2011-12-16 19:15:21
【问题描述】:

我正在填充一个带有从 AJAX 调用返回的数据的 SelectList。但是,数据显示为一个名称很长的项目,而不是几十个名称短的项目。我得到的是“ABC DEF GHI JKL MNO”而不是“ABC”、“DEF”、“GHI”等。所以,我的 SelectList 只附加了一个带有长名称的项目。

如果我在调试器中查看返回的数据,我可以根据需要看到短值显示在不同的行中。

我尝试使用“html”而不是“json”作为返回类型,但没有效果。

这是我的服务器端代码:

private void GetItems(HttpContext context, int myID) 
{
    DataTable datatable = GetMyItems(myID);

    foreach (DataRow myRow in datatable.Rows)
    {
        Response.Write(myRow["ColumnName"].ToString() + Environment.NewLine);
    }
    Response.End();
}

还有 javascript...

$.ajax({
    url: "../myAjaxPage.aspx?myID=" + myID,
    type: 'POST',
    datatype: 'json',

    success: function (data) {
        $("<option>").attr("value", data).text(data).appendTo("#<%= mySelectList.ClientID %>");
    }
});

【问题讨论】:

  • 您并没有真正从 GetItems 返回 JSON 或 HTML。 data 只是一个长字符串,而使用该长字符串,您只需创建一个

标签: javascript ajax webforms selectlist


【解决方案1】:

你没有返回 JSON,你只是返回一个字符串。但是,没关系。只需拆分字符串并迭代生成的 Array。

success: function (data) {
    $.each (data.split("\n"), function () {
        $("<option>").attr("value", this).text(this).appendTo("#<%= mySelectList.ClientID %>");
    });
});

【讨论】:

    【解决方案2】:

    您可以将对象作为数组而不是字符串返回吗?我认为换行符在 ajax 中被忽略了。如果它们存储在数组对象中,您可以执行$.each(data),我认为您正在尝试这样做

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-29
      • 1970-01-01
      • 1970-01-01
      • 2020-04-02
      • 2018-05-05
      • 2014-05-21
      相关资源
      最近更新 更多