2016-06-21 133 views
-1

我试图从ajax调用中获取返回bool,但是当我运行该函数并保存到一个变量但我唯一得到的是未定义的。ajax调用返回值

function check(number, id){ 
    $.ajax({ 
     url: 'ai.php', 
     data: { 
      "func":"checkNumber", 
      "id":id, 
      "number":number 
     }, 
     method: 'GET', 
     dataType: 'json' 
    }).done(function(jData) { 
     return jData['idFound']; 
    }).fail(function(jData) { 
     console.log(jData['idFound']); 
    }); 
} 

var test = check(44444, 12); 
console.log(test); 
// true 

// but i get an undefined value in the console.log 
+0

尝试'的console.log(jData .data ['idFound']);' –

+0

您确定'idFound'属性存在于结果'jData'中吗?也许你可以提供更多关于结果的信息。 – A1rPun

+0

jData.data ['idFound']返回一个布尔值。 如果我console.log(jData.data ['idFound'])它会写bool –

回答

0

依靠乌尔文件'ai.php'是一种格式JSON?请检查验证http://www.jsonlint.com

混淆ur代码数据,它只是'后'而不是'get'。

您可以尝试的getJSONAJAX,看起来为例:

$(document).ready(function() { 
 

 
\t $.getJSON('http://beta.json-generator.com/api/json/get/NkmG8_zBZ', function(json) { 
 
\t \t for (x=0; x<json.length; x++) { 
 
      console.log('getjson>'+json[x].nome); 
 
     } 
 
\t }); 
 

 
\t $.ajax({ 
 
\t \t type: 'get', 
 
\t \t url: 'http://beta.json-generator.com/api/json/get/NkmG8_zBZ', 
 
\t \t dataType : 'json', 
 
\t \t success: function(json) { 
 
\t \t for (x=0; x<json.length; x++) { 
 
      console.log('ajax>'+json[x].cidade); 
 
      } 
 
\t \t }, 
 
\t \t error: function(err) { 
 
\t \t \t console.log(err); 
 
\t \t } 
 
\t }); 
 
    
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

0

没有用的代码更玩,这看起来像一个异步的问题给我。

这行调用异步函数:

var test = check(44444, 12); 

但立即登录其结果将是undefined后,因为你不能保证一个返回值,除非你是“做”回调函数中。

默认JQuery的AJAX行为是异步的,但如果你真的需要它是同步的,你可以明确的设置选项,但它不被认为是很好的做法:

$.ajax({ 
    async: false, 
    ... 
}); 
+0

如果我返回来自done的值仍然未定义...但它可以console.log从'done'的值 –

+0

您是否尝试过在评论中提出的建议:'console.log(jData.data ['idFound']); ' –

+0

如果我console.log(jData.data ['idFound']);那么它写入想要存储在变量中的值 –