从ajax调用返回值

时间:2016-06-21 18:08:16

标签: javascript jquery ajax

我试图从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

2 个答案:

答案 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;
&#13;
&#13;

答案 1 :(得分:0)

如果不再使用代码,这对我来说就像是一个异步问题。

这一行调用异步函数:

var test = check(44444, 12);

但是之后立即记录结果将是undefined,因为除非你在'done'回调函数中,否则你无法保证返回值。

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

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