0

我目前正在尝试检索 JS 返回值,但我真的不知道它为什么不起作用的原因......

嗨希望我的代码是最容易阅读的,在此先感谢:

<script type="text/javascript">
                function getValLocalSto(key, URL){
                    console.log(key);
                    console.log(URL);
                    var myKey =  localStorage.getItem(key);

                    if(myKey == null){

                        // getting back JSON data

                            $.ajax({ 
                                url: URL, 
                                dataType: 'json',
                                async: false,
                                success: function (json) { 
                                            var test;
                                            console.log(JSON.stringify(json)); // the result is a well formed JSON string
                                            localStorage.setItem(key,JSON.stringify(json));
                                            myKey = localStorage.getItem(key);
                                            test =jQuery.parseJSON(myKey);
                                            console.log("My function result : "+test); // the result is a [object Object]
                                            return test;
                                        }


                            });
                    }else { 
                        // Other work whatever 
                          }

                }

                //call my function
                    console.log("sortie fonction : "+getValLocalSto("testJson", "do/profil")); // the result is "undefined"
                    var myuResult = getValLocalSto("testJson", "do/profil")); // the result is "undefined"
                    console.log(ff.prenom);
                    document.getElementById("myDiv").innerHTML="<div><input  disabled='disabled' name='text-basic' id='text-basic' type= 'text' value='Votre nom "+ff.nom+"'/></div>";
                    document.getElementById("myDiv").innerHTML+="<div> <input  disabled='disabled' name='text-basic' id='text-basic' type= 'text' value= 'Votre prenom "+ff.prenom+"'/></div>";
      </script>

解决方案 :

function getValLocalSto(key, URL){
                    // do my stuff
                            });
                    }else { 
                        // Other work whatever 
                          }
                    return test;
                }
4

2 回答 2

0

您可以将回调传递给 AJAX。将函数定义更改为:

function getValLocalSto(key, URL, callback){
...
$.ajax({ 
url: URL, 
dataType: 'json',
async: false,
success: callback
});
...

在代码中:

getValLocalSto("testJson", "do/profil", function(data) {
  localStorage.setItem(key,JSON.stringify(data));
  myKey = localStorage.getItem(key);
  test = jQuery.parseJSON(myKey);
  // here you work with test as you want as a result of getValLocalSto
});
于 2013-04-26T10:17:14.570 回答
0

只需利用变量范围在 getValLocalSto 外部函数中的 ajax 成功函数之外声明测试变量。否则,您将需要一个回调来从 ajax 成功函数返回变量。尝试这个:

<script type="text/javascript">
                function getValLocalSto(key, URL){
                    ...

                    if(myKey == null){

                        // getting back JSON data

                        var test;

                        $.ajax({ 
                                url: URL, 
                                dataType: 'json',
                                async: false,
                                success: function (json) { 
                                            console.log(JSON.stringify(json)); // the result is a well formed JSON string
                                            localStorage.setItem(key,JSON.stringify(json));
                                            myKey = localStorage.getItem(key);
                                            test =jQuery.parseJSON(myKey);
                                            console.log("My function result : "+test); // the result is a [object Object]

                                        }
                         });

                         return test;

                    }else { 
                        // Other work whatever 
                          }

                }

                //call my function
                    console.log("sortie fonction : "+getValLocalSto("testJson", "do/profil")); // the result is "undefined"
                   ...
      </script>
于 2013-04-26T10:17:24.880 回答