【问题标题】:Populate textbox with JSON object from c# LINQ使用来自 c# LINQ 的 JSON 对象填充文本框
【发布时间】:2014-01-16 21:10:10
【问题描述】:

我正在尝试使用 .cs 页面中的数据填充两个文本框,该页面返回 JSON 对象,但文本框未填充。它没有显示错误,并且在萤火虫上我看到了该对象。 回复如下:

{"d":"[{\"ProjectContactFirstName\":\"asdfa\",\"ProjectContactLastName\":\"adsf\"}]"}

这是执行查询的 AJAX 代码和 WebMethod。

$.ajax({
    url: "view-requests.aspx/getProjectByID",   // Current Page, Method
    data: JSON.stringify({ id: id }), // parameter map as JSON
    type: "POST", // data has to be POSTed
    contentType: "application/json", // posting JSON content    
    dataType: "JSON",  // type of data is JSON (must be upper case!)
    timeout: 10000,    // AJAX timeout
    success: function (result) {
        //alert(result);
        $("#txtContactFirstEdit").val(result.ProjectContactFirstName); <-- How do I populate from JSON?
        $("#txtContactLastEdit").val(result.ProjectContactLastName); <-- How do I populate from JSON?
    },
    error: function (xhr, status) {
        alert(status + " - " + xhr.responseText);
    }
});

这是返回 JSO 以成功填充文本框的 WebMethod。只是不确定如何将其提供给 AJAX。

[WebMethod]
public static string getProjectByID(int id)
{
    using (dbPSREntities4 myEntities = new dbPSREntities4())
    {
        var thisProject = myEntities.tbProjects.Where(x => x.ProjectID == id);
        var columns = thisProject.Select(x => new { x.ProjectContactFirstName, x.ProjectContactLastName }).ToList();
        JavaScriptSerializer serializer = new JavaScriptSerializer();
        var json = serializer.Serialize(columns);
        return json;
    }

【问题讨论】:

  • 你能澄清一下问题是什么以及问题是什么吗?
  • 对不起...我澄清了上面的问题。 :)
  • 您正在对结果进行双重序列化 1) serializer.Serialize(columns); 2) WebService framework 用于您的字符串。要么直接在 webmethod 中返回你的对象(不使用 JavaScriptSerializer),要么在你的客户端使用 Json.parse。

标签: c# asp.net ajax json linq


【解决方案1】:

您的代码返回一个包裹在一个对象中的 JSON 数组,因此您的代码应该看起来更像这样:

    success: function (result) {
        //alert(result);
        $("#txtContactFirstEdit").val(result.d[0].ProjectContactFirstName); <-- How do I populate from JSON?
        $("#txtContactLastEdit").val(result.d[0].ProjectContactLastName); <-- How do I populate from JSON?
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-29
    • 1970-01-01
    • 1970-01-01
    • 2011-04-16
    相关资源
    最近更新 更多