我有一个jquery与服务器端Web方法交互。 Web方法接受来自jquery的字符串'memID',并基于它执行SQL查询。然后我创建了一个类: -
public class Member
{
// Objects of Member. //
public string id { get; set; }
public string HPCode { get; set; }
public string OPfromDate { get; set; }
public string OPthruDate { get; set; }
public Member(string ID, List<string> hpCode, List<string> opfromDate, List<string> opthruDate)
{
id = ID;
for (int j = 0; j < hpCode.Count; j++){ HPCode = HPCode + (hpCode)[j] + '*' };
for (int j = 0; j < opfromDate.Count; j++){OPfromDate = OPfromDate + (opfromDate)[j] + '*' };
for (int j = 0; j < opthruDate.Count; j++){OPthruDate = OPthruDate+ (opthruDate)[j] + '*' };
}
}
此类用于将SQL查询的结果返回给客户端: -
return JsonConvert.SerializeObject(member);
我使用断点并在客户端检查,确实它获得了返回值。但是我不确定解析这些值的最佳方法是什么,并将它们存储在我的javascript端的变量中,这样我就可以将它们用于客户端功能。
// Ajax function that sends member ID from client side to server side without a post back.
function ajax()
{
$.ajax
({
url: 'Default.aspx/MyMethod',
type: 'POST',
dataType: "json",
contentType: 'application/json; charset=utf-8',
data: JSON.stringify({ memID: mem_ID }),
success: onSuccess,
fail : onFail
});
}
// If client-to-server communication is successful.
function onSuccess(data)
{
confirm(data.d);
var returnedstring = (data.d);
var jsondata = $.parseJSON(data.d);
}
现在我如何解析'数据'?是否有评估函数?或解析功能?
有人有任何网络示例吗?在此之前我只将1值传递给我的客户端,因此很容易获得,现在我对多个值感到困惑。
更新: -
我尝试在我的javascript端执行此操作: -
var returnedstring = (data.d);
var member = data.d.id;
var Hp = data.d.HPCode;
然而,当我使用断点并用鼠标悬停它们时,我得到成员和HP未定义,但是返回的字符串具有所有正确的值...... ...任何想法?
解决方案(我无法弄清楚答案中建议的其他方式,但这对我有用): -
function onSuccess(data)
{
// stores entire return in one string.
var returnedstring = (data.d);
// parses json returned data
var jsondata = $.parseJSON(data.d);
var member = jsondata.id;
var HpCode = jsondata.HPCode;
}
答案 0 :(得分:3)
因为您正在使用dataType: "json"
,所以{J}字符串已经解析了data
。这就是您能够在Javascript中访问data.d
的原因。
要访问成员,您可以执行以下操作:
console.log(data.d.HPCode);