【发布时间】:2012-05-10 17:46:34
【问题描述】:
我在 .NET 中有一个 Web 方法,它返回一个对象列表。
[System.Web.Services.WebMethod(enableSession: true)]
public static List<CourseItem> GetItems() {
return (new MTE()).GetItems();
}
以及CourseItem对象如下:
public static CourseItem {
public string CourseNum { get; set; }
public string Desc { get; set; }
}
我从 javascript 中使用 webmethod,如下所示:
function GetCourses_Success(result) {
// Problem starts here
if (result.d != null) {
for (i = 0; i < result.d.length; i++) {
alert(result.d[i]["CourseNum"]);
}
问题: 警报有时会显示“NaN”而不是实际的课程编号。问题与大多数课程编号只是数字这一事实有关,但偶尔会有课程编号是一个末尾带有星号的数字(例如 - 111234* 或 999234*)。所以在 webmethod 和 alert 之间的某个地方,有些东西为了自己的利益而试图变得太聪明,并认为 CourseNum 是一个数字字段(也许是整数),而实际上它只是一个字符串。
我也试过了
result.d[i]["CourseNum"].toString()
但警报仍然显示“NaN”
提前感谢您的帮助!
【问题讨论】:
-
我很想知道如果您将值分配给标签而不是提醒它,它是否会起作用;不过,我的钱说它仍然会产生相同的结果。您也可以尝试一种 hacky 方法:
var foo = result.d[i]["CourseNum"] + ''; -
你是对的 - 它确实产生了相同的结果。
标签: javascript jquery asp.net webmethod