2014-01-16 31 views
-4

我想用一個.cs頁面中的數據填充兩個文本框,該頁面返回一個JSON對象,但是文本框不填充。它不顯示錯誤,並且在螢火蟲上看到對象。 這裏的響應:用C#填充JSON對象的文本框LINQ

{ 「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); 
    } 
}); 

以下是WebMethod返回JSO以成功填充文本框。只是不知道如何把它給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; 
    } 
+0

你能否澄清的問題是什麼,問題是什麼呢? – tnw

+0

對不起......我澄清了上面的問題。 :) – user1431633

+1

您正在對您的結果進行雙重序列化1)'serializer.Serialize(columns);'2)'WebService框架'爲您的字符串。在webmethod中直接返回對象(不使用* JavaScriptSerializer *),或者在客戶端使用Json.parse。 –

回答

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? 
    }