来自Ajax Call的结果

时间:2016-02-03 22:11:22

标签: javascript jquery ajax

我有一个ajax调用,我想在另一个页面上使用这个ajax的结果。

//这是main.js文件

function myFun(){
    var my_user = "Stas";
    var itemsUrl = "myxmlwithusers";
    var user_found = false;
    $.ajax({
         url: itemsUrl,
         method: "GET",
         headers: { "Accept": "application/json; odata=verbose" },
         cache: false,
         async: false,
         dataType: "text",
         success: function(data){
            var jsonObject = JSON.parse(data);
            results = jsonObject.d.results;
            $(results).each(function(){ 
                if($(this)[0].user == my_user){
                     user_found = true;
                }
            });
         },
         error:function () {
              console.log("Error");
          }
        }
    );
}

//这是execute.js文件

myFun();
if (user_found == true){cool}

// user_found我需要true或false。假设我将文件execute.js放入我的函数myFun(),在main.js中,我的用户使用“$(this)[0] .user”获取,我需要在execute.js中接收“true”< / p>

谢谢!

3 个答案:

答案 0 :(得分:0)

1st:只需在html中包含任何js文件

<head>
   <script>
      var user_found = true; // or false if you like
   </script>
   // include main.js and execute.js
</head>

现在你可以在没有var的js文件中的任何地方调用user_found ..即使它在任何js文件函数中改变它会在其他文件中改变

Simple Example

第二名如果在execute.js之前包含main.js,可以像

一样使用它
var user_found = false;
function myFun(){
    var my_user = "Stas";
    var itemsUrl = "myxmlwithusers";
    $.ajax({
         url: itemsUrl,
         ....................

Simple Example

答案 1 :(得分:0)

问题是$ .ajax调用是异步的,a.k.a你在设置之前检查user_found的值。尝试这种方法

function myFun(callback){
    var my_user = "Stas";
    var itemsUrl = "myxmlwithusers";
    var user_found = false;
    $.ajax({
         url: itemsUrl,
         method: "GET",
         headers: { "Accept": "application/json; odata=verbose" },
         cache: false,
         async: false,
         dataType: "text",
         success: function(data){
            var jsonObject = JSON.parse(data);
            results = jsonObject.d.results;
            $(results).each(function(){ 
                if($(this)[0].user == my_user){
                     user_found = true;
                }
            });
            if(typeof callback === "function"){
               callback(user_found);
            }
         },
         error:function () {
              console.log("Error");
          }
        }
    );
}

然后你可以像

一样使用它
myFun(function(result){
    if (result == true){
        //cool
    }
});

答案 2 :(得分:0)

考虑使用HTML5本地存储。存储的值应该可以通过您域中提供的每个页面访问。

// Store
localStorage.setItem("user_found", "true");
// Retrieve
document.getElementById("result").innerHTML = localStorage.getItem("user_found");