我试图从ajax调用中获取返回bool,但是当我运行该函数并保存到变量但我唯一得到的是未定义的。
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 :(得分:0)
依赖你的文件' ai.php' 是一种格式json?请检查验证http://www.jsonlint.com
混淆你的代码数据,它只是' post'而不是'得到'。
你可以尝试 getjson 或 ajax ,看一个例子:
$(document).ready(function() {
$.getJSON('http://beta.json-generator.com/api/json/get/NkmG8_zBZ', function(json) {
for (x=0; x<json.length; x++) {
console.log('getjson>'+json[x].nome);
}
});
$.ajax({
type: 'get',
url: 'http://beta.json-generator.com/api/json/get/NkmG8_zBZ',
dataType : 'json',
success: function(json) {
for (x=0; x<json.length; x++) {
console.log('ajax>'+json[x].cidade);
}
},
error: function(err) {
console.log(err);
}
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
&#13;
答案 1 :(得分:0)
如果不再使用代码,这对我来说就像是一个异步问题。
这一行调用异步函数:
var test = check(44444, 12);
但是之后立即记录结果将是undefined
,因为除非你在'done'回调函数中,否则你无法保证返回值。
默认的JQuery AJAX行为是异步的,但是如果你真的需要它是同步的,你可以明确地设置选项,虽然它不被认为是好的做法:
$.ajax({
async: false,
...
});