首页 > 解决方案 > 嵌套的 jQuery 代码总是首先返回“未定义”?

问题描述

.done在父级中有一个嵌套的 jquery ajax 调用。它可以工作,但是,在调用时总是undefined在开始时返回getProjectFiles(projectid),无论它是否data为空。

js:

function getProjects() {
  //...some typical jquery code
  ajaxRequest.done(function(data) {
    //...append some stuff to html
    $('#mydiv').append('some html stuff' + getProjectFiles(projectid));
  }
}

function getProjectFiles(projectid) {
  var func = 'getProjectFiles';
      var args = [projectid];

      var formData = { 
        'action': func,
        'args': args
      };
  $.ajax({
        type: 'post',
        url: '../includes/ajax.php',
        data: formData,
        dataType: 'json'
      });
  ajaxRequest.done(function(data) {
    if(data) {
      $.each(data, function(i,v) {    
        $('div#'+projectid+'.project-box-files').append(v['filename']);
      })  
    }
  });
}

php:

//these are in a separate functions.php file
function pdoSelect($sql, $args) {
    $pdo = dbConnect();
    $stmt = $pdo->prepare($sql);
    $stmt->execute($args);
    $returnval = $stmt->fetchAll(PDO::FETCH_ASSOC);
    echo json_encode($returnval);
}

function getProjectFiles($someParameters){
    //db insert
    $sql = 'SELECT blah blah';
    $args = array($someArgs);
    return pdoSelect($sql, $args);
}

//this one is in ajax.php
$func = $_POST['action'];
$args = $_POST['args'];
call_user_func_array($func, $args);

甚至在填写之前getProjectFiles()就被“异步调用”了吗?还是我需要某种“回调”格式来调用内部? projectidgetProjectFilesgetProjects

标签: phpjqueryajax

解决方案


推荐阅读