【问题标题】:How to return a value from an ajax json call?如何从 ajax json 调用中返回一个值?
【发布时间】:2011-09-21 13:56:52
【问题描述】:

我已经查看了过去的问题以找到这个问题的答案,但如果我遗漏了什么并且它确实存在,请原谅我。

我想做的事情的本质是:

单击复选框后,将执行一个函数。

$(".check_group").live('click', function(){
        var valueid = $(this).val();
                    countThem();
                    if($(this).is(":checked")){
                     blah blah blah.......

函数是这样的:

function countThem(){

        if($('input#currentGroup').val()){

        $.ajax({
            url: "controlBrief.php?ajah=count_group_establishments", 
            dataType: "json", 
            success: function(data){
                $("#message_area").html("There are "+data.totalNumber+" establishments already in this group. <BR/>");
                $("#message_area").slideDown();


            }
        });
        }

    }

到目前为止,整个事情都是成功的,所以我的 php 页面中的 ajax 调用或 json 编码没有问题。

然后需要返回 data.totalNumber 变量并将其保存在一个变量中,以供另一个函数或事件中使用。这就是我被卡住并问大问题的地方? :)

JSON、Ajax 和 JQuery 仅在一个月前进入了我的词汇表,所以你可以为我指出的任何方向都会很棒。

【问题讨论】:

  • 确实,这些几乎是一样的。谢谢你张贴这个。在那里我找到了我需要的确切解决方案。我不知道我可以通过在前面添加关键字来返回整个 $.ajax 调用!
  • 好吧,只有当您进行同步时,您实际上应该不这样做。你应该改变你的逻辑来接受回调。

标签: php ajax json return


【解决方案1】:

您可以使用 jQuery.data 并将其附加到 DOM 的某个部分,这是有意义的。

【讨论】:

    【解决方案2】:

    您可以使用 $.get 或 $.post 来代替通用的 $.ajax 方法,语法如下:

     $.get("controlBrief.php",{"ajah":"count_group_establishments"},function(data)
     {
            $("#message_area").html("There are "+data.totalNumber+" establishments already in this group.");
            $("#message_area").slideDown();
     },"json");
    

    【讨论】:

    • 这段代码也有效,但它把我带到了同一点。然后如何提取 data.totalNumber 的值以便在其他地方使用(例如,在另一个函数中)?
    • @Nolo 嗯,有几种方法取决于上下文。您可以创建一个全局变量并将数据存储在那里,或者您可以更好地创建包含分组全局数据的类。另一种选择是按照 NullRef 的建议将数据存储在 DOM 中,并在所需的函数中从那里获取值。
    【解决方案3】:

    How to return an array from jQuery ajax success function properly? 与您的问题非常相似。这个问题是关于返回一个数组,但你的单个 data.totalNumber 可以以类似的方式返回。

    【讨论】:

    • 问题确实是一样的,但它使事情变得复杂而不是简化。我在此期间解决了它,但不是通过那个建议。不过谢谢。
    • 很高兴您对它进行了排序。如果他们为您提供了解决方案,您可以在此处接受任何答案。如果它们都不令人满意,那么其他人阅读您的解决方案将非常有用,因此您可以将其添加为答案并接受它! :-)
    猜你喜欢
    • 1970-01-01
    • 2012-07-11
    • 1970-01-01
    • 2013-08-15
    • 2011-04-14
    • 1970-01-01
    • 1970-01-01
    • 2017-11-04
    • 1970-01-01
    相关资源
    最近更新 更多