【发布时间】:2016-04-22 18:34:15
【问题描述】:
现在我已经成功地从 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)”什么也没显示,“alert(result.data)”也是如此
控制器(在测试用例场景中)正在传回一个字符串,一个电子邮件地址。在“现实生活”的使用中,它将是 0..N 个电子邮件地址,但现在它已成功传回一个字符串,但由于某种原因它不在“结果”中,或者我没有把它从那里取出因为它应该被提取。
更新
好的,现在我们到了某个地方;我在“成功”函数中放置了一个断点,将鼠标悬停在其“返回数据”参数上,然后看到:
然而,当我随后将此代码添加到“成功”回调时:
success: function (returneddata) {
alert('success');
alert(UnitReportPairEmailVals[0]);
},
(将“returneddata”替换为“UnitReportPairEmailVals”,即返回数据的值),在进入第二个警报时,我收到“未捕获的引用错误:'UnitReportPairEmailVals' 未定义”
更新 2
当我拼凑出几个不同的答案后,我写了一个关于如何做到这一点的提示here。
【问题讨论】:
-
在你浏览器的调试工具中,
result的值是多少? -
它不允许我进入该方法 - 我可以在 AJAX 方法的开头放置一个断点,但 F10 将我一直带到它的结尾。 F11 将我带入了 jquery 本身的迷宫泥潭。
-
如果你在回调中放置一个断点并且它从未被命中,那么回调根本就没有被调用。
-
是的,因为我看到了“成功”警报。哦,我明白你的意思了——当我在那里设置断点时我确实命中了;我觉得奇怪的是,它开始时的断点,然后按 F10,并没有把我带进去。
-
然后你可以放置一个断点来停止调试器并检查
result的运行时值。我们无法真正猜测result的结构是什么,但你可以检查一下。
标签: javascript jquery ajax asp.net-mvc generic-list