我正在尝试通过Ajax从服务器端代码返回对象列表。它已成功返回,但我无法提取。
jQuery代码
$.ajax({
type: "POST",
contentType: "application/json;charset=utf-8",
url: "MyWebService.asmx/Execute_SequenceNo",
data: JSON.stringify({
"journalEntry": $('#ContentPlaceHolder1_txtJournalEntry').val().trim()
}),
dataType: "json",
success: function (data) {
alert("Success = " + data.d.length + ', Data 0 =' + data.d[0] + ' ' + data.d[1])
},
error: function (result) {
}
})
下面的代码从我的Sql Server获取记录
WebService
[WebMethod]
public SequenceNumber[] Execute_SequenceNo(string journalEntry)
{
DataTable dt = new DataTable();
List<SequenceNumber> details = new List<SequenceNumber>();
try
{
string cs = ConfigurationManager.ConnectionStrings["TestConnectionString"].ConnectionString;
using (SqlConnection con = new SqlConnection(cs))
{
SqlCommand cmd = new SqlCommand("spTest", con);
cmd.CommandType = CommandType.StoredProcedure;
con.Open();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
foreach (DataRow drow in dt.Rows)
{
sequence.errorMsg = "Valid";
details.Add(sequence);
}
}
return details.ToArray();
}
catch (Exception ee)
{
//return "NotValid error = " + ee.ToString();
SequenceNumber sequence = new SequenceNumber();
sequence.errorMsg = "NotValid";
return details.ToArray();
}
}
它成功返回,但是我的警报如下所示
输出
Success = 2, Data 0 =[object Object] [object Object]
答案 0 :(得分:1)
您的代码似乎运行正常。似乎您期望alert()
会做更多的事情。它不会序列化对象或显示您可能想要从这些对象获得的任何给定属性。任何不是原始值的东西都会显示为:
[object Object]
最简单的调试方法是不使用alert()
。而是使用console.log()
。这有一些好处:
打开浏览器的调试工具,然后查看控制台。然后,在代码中(当前使用success
的{{1}}函数中),只需执行以下操作:
alert()
观察已记录到控制台的内容。对于调试,这将为您提供复杂对象/数组console.log("Success = ", data);
是什么,它的元素是什么等的精确表示。从那里您可以具体观察如何访问该对象/数组中的任何给定值。>