2015-09-30 4 views
0

Я использую self host api и хочу использовать данные из вызова ajax другой функцией, но он не работает. Я не знаю.использовать данные из ajax call

Мой код:

function checkData() { 
$.ajax({ 
    type: "GET", 
    url: "http://localhost:8080/api/Data" 
}).success(function (result) { 
    var datareturned = result.stateLog; 
    console.log('done' + datareturned); 
    x = datareturned; 
    test(x); 
}); 
} 

setInterval(checkData, 5000); 

function test(data) { 
alert(data); // Here i get undefined 
} 

Вы знаете, как я могу использовать эти данные?

Спасибо, продвинутый!

С уважением, ловушка

+0

введите 'test (data)' inside' checkData() 'и повторите попытку – guradio

+1

ли ваш console.log показывает правильный' datareturned'? – user3154108

+0

он будет работать. Can u pls дает скрипку код –

ответ

1

Я стараюсь это и работает отлично:

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title></title> 
    <script src="js/jquery-1.8.1.min.js"></script> 
    <script> 
     function checkData() { 
      $.ajax({ 
       type: "GET", 
       url: "file.data.txt" 
      }).success(function (result) { 
       console.log('readed:' + JSON.stringify(result));  
       var datareturned = JSON.parse(result).stateLog; 
       console.log('done ' + datareturned); 
       var x = datareturned; 
       test(x); 
      }); 
     } 

     setInterval(checkData, 5000); 

     function test(data) { 
      alert(data); // Here i get undefined 
     } 
    </script> 

</head> 
<body> 

</body> 
</html> 

JSON DATA (file.data.txt):

{ 
"stateLog":"Active" 

} 
+0

Хмм, я действительно не понял. У меня есть файл url, а не файл data.txt. Это адрес. – trap

+0

@trap ваш url, похоже, не возвращает какие-либо пригодные для использования данные, проверьте, что ваш консольный вызов помещается в вашу консоль. – user3154108

0

в console.log он по-прежнему приходит неопределенно.

Но если я изменить подобный код:

{ 
$.ajax({ 
    type: "GET", 
    url: "http://localhost:8080/api/Data", 
    success: function (data) { 
     console.log(data); 
    } 
});} 

Я получаю журнал консоли (объект)

+0

попытайтесь изменить console.log (data) на console.log (JSON.stringify (data)); и post console.log result –

0

Ваш объект результата, кажется, не имеют свойство .stateLog. Если вы пытаетесь получить доступ к статусу HTML ответа, вы можете

.success(function (result, response) { 
    var datareturned = result; 
    console.log('done' + response); 
    x = datareturned; 
    test(x); 
} 

Или

.success(function (result, response, jqXHR) { 
    var datareturned = result; 
    console.log('done' + jqXHR.statusCode); 
    x = datareturned; 
    test(x); 
} 

Или что-то подобное. Если вы попытаетесь вернуть объект в качестве результата, который должен иметь свойство .stateLog, тогда вы должны указать тип данных Ajax-вызовов и/или убедиться, что ваш сервер вернет правильный формат. например если вы вернете строку json, вам нужно сначала разобрать ее, прежде чем вы сможете использовать ее как объект. Конечно, тогда объект должен иметь желаемое свойство.

+0

Да, у меня не было подходящего свойства. Он работает сейчас! Благодаря! – trap

+0

@trap, если проблема решена, примите ответ, чтобы отметить закрытие. – user3154108

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