使用来自ajax调用的数据

时间:2015-09-30 08:19:05

标签: jquery ajax

我使用自主机api并希望在另一个函数中使用来自ajax调用的数据,但它不起作用。我没有找到。

我的代码:

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
}

您知道我该如何使用这些数据吗?

先谢谢!

此致 陷阱

3 个答案:

答案 0 :(得分: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"

}

答案 1 :(得分:0)

在console.log中它仍未定义。

但是,如果我改变代码:

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

我得到一个控制台日志(一个对象)

答案 2 :(得分: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);
}

或类似的东西。 如果您尝试返回一个Object作为应该具有.stateLog属性的结果,那么您应该指定Ajax调用的dataType和/或确保您的服务器返回正确的格式。例如如果返回json字符串,则需要先将其解析,然后才能将其用作对象。 当然,对象需要具有所需的属性。