现在我已成功从Ajax调用我的控制器方法(请参阅更新2 here了解详细信息),我的下一步是访问从Ajax成功函数中的Controller方法传回的数据。
在这种情况下,我传回一个jsonified通用的字符串列表(0..N字符串vals)。
如何从嵌入在jquery ajax调用中的成功函数访问它们:
var model = JSON.stringify({ unit: unitval, report: rptval });
$.ajax({
type: 'GET',
url: '@Url.Action("GetUnitReportPairEmailAddresses", "UnitReportPair")',
data: { unit: unitval, report: rptval }, // data: model,
contentType: 'application/json', //<= this is paired with stringify above; if comment out one, comment out both
cache: false,
success: function (result) {
alert('success');
alert(result.data);
},
error: function () {
alert('failure');
}
});
我假设它是通过查询“结果”对象,但是如何?我试过这个:
success: function (result) {
alert('success');
alert(result[0]);
},
...但只在“成功”警报后才看到“未定义”警报。一个简单的“警报(结果)”没有显示任何内容,“alert(result.data)”
也是如此Controller(在测试用例场景中)传回一个字符串,一个电子邮件地址。在“现实生活”中,它将是0..N的电子邮件地址,但是现在它已成功传回一个字符串,但由于某种原因它不是“结果”,或者我没有把它从那里拿出来因为它应该被提取。
好的,现在我们到了某个地方;我在“成功”函数中放置了一个断点,在其“返回的数据”参数上盘旋,并看到:
然而,当我将此代码添加到“成功”回调中时:
success: function (returneddata) {
alert('success');
alert(UnitReportPairEmailVals[0]);
},
(将“returndata”替换为“UnitReportPairEmailVals”,这是returndata的值),在步入第二个警报时,我得到了“未捕获的引用错误:'UnitReportPairEmailVals'未定义”
我将几个不同的答案拼凑在一起后,我写了一个关于如何执行此操作的提示here。
答案 0 :(得分:2)
未捕获的参考错误:&#39; UnitReportPairEmailVals&#39;未定义
本身它无法在任何地方定义。它不是变量,它是变量的属性。具体来说,在returneddata
。这里的变量基本上与它们在C#中的工作方式相同:
function (returneddata) {
alert(returneddata.UnitReportPairEmailVals[0]);
}