我被迫使用该函数外部的 getJSON 回调函数内的数据。看看:
$('#stars').raty({
score: function() {
var $value = 0;
var $id = <?=$id?>;
$.getJSON("getuserrating.php?id=" + $id, function(data) {
$.each(data, function(key, val) {
$value = val;
});
});
return $value;
},
});
这是我尝试过的,但失败了,$value 仍然设置为 0,尽管在回调中它肯定设置为实际值。我知道为什么会失败,因为 AJAX 请求是异步发送的。问题是,正确的方法,即在回调中执行所有操作,是不可能的。正如您所看到的,我需要在raty(插件)设置中检索JSON对象。我只想使用 $.ajax() 并将其设置为同步,但文档将其标记为 1.8 中已弃用。我不想引入一个我知道将来会被弃用的解决方案。
有什么办法可以做到这一点吗?也许我只是只见树木不见森林,而我面前有一个简单的解决方案。预先感谢:)
最佳答案
如果您需要使用ajax来获取分数,则方法是向后的。
首先进行ajax调用,然后在ajax成功时将值传递给score
$.getJSON("getuserrating.php?id=" + $id, function(data) {
/* pseudo code here since I don't know the plugin and it's data requirments*/
var score= data.score;
$('#stars').raty({
score: score
});
});
编辑:您仍然可以通过这种方式将数据传递到分数函数
关于javascript - 检索 getJSON 回调函数中设置的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11107248/