javascript - 检索 getJSON 回调函数中设置的变量

标签 javascript jquery ajax json

我被迫使用该函数外部的 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/

相关文章:

javascript - Javascript 中一个类的所有实例的公共(public)回调

jquery - 多重转换

jquery - 有什么方法可以根据 jQuery 中的值隐藏选择下拉列表中的值吗?

javascript - jquery ajax调用在重新使用时获取旧数据

java - JSP不调用ajax函数

javascript - 如何重新加载src元素

javascript - 尝试解析从 Observable 返回的错误

javascript - 将类中某个 HTMLElement 成员的 onclick 属性设置为同一个类的方法

javascript - 将事件绑定(bind)到动态生成的表单

javascript - 使用 jQuery、Ajax、MySQL 和 Java 进行用户身份验证