2016-06-21 2 views
-1

Я пытаюсь получить возврат bool из вызова ajax, но когда я запускаю функцию и сохраняю ее в переменной, но единственная вещь, которую я получаю, не определена.Возвращаемое значение из вызова 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

Try 'console.log (jData .data ['idFound']); ' –

+0

Вы уверены, что свойство' idFound' присутствует в результате 'jData'? Возможно, вы могли бы предоставить больше информации о результатах. – A1rPun

+0

jData.data ['idFound'] возвращает bool. if i console.log (jData.data ['idFound']) он напишет bool –

ответ

0

Зависят ур файл 'ai.php' это формат JSON? пожалуйста, проверьте правильность http://www.jsonlint.com

Сбросить данные кода ур, его просто «сообщение», а не «получить».

Вы можете попробовать getjson или Аякса, выглядят Exemple:

$(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

Если я вернусь значение из сделанного я все равно получаю undefined ... но оно может console.log значение из 'done' –

+0

Вы попробовали предложение, сделанное в комментариях: 'console.log (jData.data ['idFound']); ' –

+0

Если я console.log (jData.data ['idFound']); то он записывает значение, которое нужно сохранить в переменной –

Смежные вопросы