我尝试在jQuery UI模式上填充webform,当有人使用AJAX从数据库中点击数据编辑按钮来调用方法getProjectByID()并在模态上填充webform时。我觉得我很接近,但肯定错过了一些东西。我基本上想要从带有ProjectID的单击行获取十个左右的列,使用JSON返回它们然后解析JSON并使用表中的列填充模态中的相应文本框。
AJAX致电:
var id = $(this).attr('value'); //this is the id of the clicked row
$.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);
},
error: function (xhr, status) {
alert(status + " - " + xhr.responseText);
}
});
的WebMethod:
[WebMethod]
public static string getProjectByID(int id)
{
using (dbPSREntities4 myEntities = new dbPSREntities4())
{
var thisProject = from tbProject in myEntities.tbProjects.Where(x => x.tbProject == id) // this is not correct but close?
select tbProject;
return thisProject.ToList(); //no idea how to return it...
}
}
在AJAX中我想填充文本框,但我现在不知道如何解析JSON以获取值。
对此的任何帮助将不胜感激!
答案 0 :(得分:1)
首先你的LINQ会起作用,但你可以简单地删除不必要的部分。第二,您需要使用一些序列化程序,例如System.Web中已经发布的序列化程序,并将您的数据转换为JSON:
[WebMethod]
public static string getProjectByID(int id)
{
var thisProject = myEntities.tbProjects.Where(x => x.tbProject == id).ToList();
JavaScriptSerializer serializer = new JavaScriptSerializer();
var json = serializer.Serialize(thisProject);
return json;
}
实际上,如果您的LINQ查询只返回一个对象而不是一个集合,那么您可以更简单地使用JSON:
var thisProject = myEntities.tbProjects.Where(x => x.tbProject == id).Single(); // or SingleOrDefault - depends on your situation
...
var json = serializer.Serialize(thisProject);
这将为您提供仅描述项目对象的JSON,而不会产生数组开销。
答案 1 :(得分:1)
我可以在这里找到良好的开端:http://matijabozicevic.com/blog/csharp-net-development/csharp-serialize-object-to-json-format-using-javascriptserialization
我可以看到你试图将一个对象列表返回给客户端,但是你的WebMethod被设置为返回一个字符串,对吧?那么为什么不序列化呢?
string json = new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(thisProject);
return json;
对我来说,权利可以将整个对象列表作为数组返回给客户端