从jquery ajax调用中分配变量返回undefined

我是jquery的新手,我试图在ajax调用之后为变量赋值,但它返回undefined。 我的代码如下:

function prepareDocument() { var a = getAverageRating(1); alert(a); } function getAverageRating(pageId) { $.ajax({ url: "../services/rating.ashx?action=getAverageRating&pageId=" + pageId, dataType: "text", type: "GET", data: {}, error: function (err) { displayDialogBox("Error", err.toString()); }, success: function (data) { return data; } }); } 

任何帮助,将不胜感激。 谢谢,

对于不习惯使用异步操作的人来说,这是一个非常常见的问题。 它需要您重新考虑如何构建代码,因为您不能只以正常的顺序样式编程。

您不能从异步ajax调用的成功处理程序返回值。 ajax cll早已完成并已经返回。 从成功处理程序返回一个值只是进入ajax代码的内容,而不是返回到代码中。

相反,您必须在成功处理程序或从成功处理程序调用的函数中使用ajax调用的结果。

在您的特定情况下,您的getAverageRating()函数可能需要采用回调函数,并且在检索到评级时,将调用回调函数。 它不能返回值,因为它会立即返回,然后在将来的某个时间返回,ajax调用完成,并使用实际数据调用ajax函数中的成功处理程序。

 function prepareDocument() { getAverageRating(1, function(data) { alert(data); }); } function getAverageRating(pageId, fn) { $.ajax({ url: "../services/rating.ashx?action=getAverageRating&pageId=" + pageId, dataType: "text", type: "GET", data: {}, error: function (err) { displayDialogBox("Error", err.toString()); }, success: function (data) { fn(data); } }); }