使用ajax从文件中获取编码数组

时间:2014-12-06 21:35:47

标签: php arrays ajax

我试图使用以下代码从文件中获取编码数组[{"got":"1235.00","needed":"4350"}]

function getNewValues(){
        $.ajax({
            dataType: 'json',
            url: 'get.php',
            type: 'POST',
            cache: false
        })
        .success(function(data) {
            return data;
        })
        .fail(function() {
            console.log("An error ocurred");
        })
    }

但问题是我回到return data的唯一问题是array( object ),问题是我不知道什么是错的,或者说文件出错了。

生成编码数组:

<?php
  $pdo = new PDO('mysql:host=127.0.0.1;dbname=thermometer', 'root', ''); 
  $sql = 'SELECT `got`.`value` AS got, `needed`.`value` AS needed FROM `needed`, `got`'; 
  $statement = $pdo->prepare($sql);
  $statement->execute();
  $result = $statement->fetchAll(PDO::FETCH_ASSOC);
  $json = json_encode($result);
  print_r($json);
?>

如果某人有解决方案,那将是很好的因为我无法解决它:(

3 个答案:

答案 0 :(得分:0)

编辑:重读您的问题。认为this response类似的问题可能有所帮助。

执行准备好的语句之后,这样的事情可能会起作用而不是PDO :: FETCH_ASSOC

...
$result = $statement->execute();
for ($file_data = array(); $row = $result->fetch_assoc(); $file_data[] = $row);

$ file_data是一个关联数组,包含你想要的任何数据。

print json_encode($file_data);

答案 1 :(得分:0)

您需要在函数内部设置并返回变量,而不是尝试将ajax返回值作为函数返回。换句话说,将ajax返回一个变量传递给一个函数变量然后返回它。像这样:

function getNewValues(){
   var returnedJSON= $.ajax({
        dataType: 'json',
        url: 'get.php',
        type: 'POST',
        cache: false
    })
    .success(function(data) {
        return data;
    })
    .fail(function() {
        console.log("An error ocurred");
    })
   return returnedJSON;
    }

答案 2 :(得分:0)

您的问题是该功能在数据到达时已经完成。这是由于AJAX的异步特性。您需要在到达时处理您的数据,而不是假设它已经到达之前。

function getNewValues(){
    $.ajax({
        dataType: 'json',
        url: 'get.php',
        type: 'POST',
        cache: false
    })
    .success(function(data) {
        // Handle your data here;
    })
    .fail(function() {
        console.log("An error ocurred");
    });

 // Attempting to use the data or returning the data here will not work!
}