使用AJAX调用函数不起作用

时间:2014-12-15 14:19:07

标签: php jquery ajax csv file-upload

我有AJAX调用调用PHP文件中的函数并返回一些JSON。它看起来像这样。

$('#uploadCustomerForm').on('submit', function(e) {
    e.preventDefault();

    $.ajax({
        url: "/resources/submit.php?action=uploadCustomers",
        type: "POST",
        data: new FormData(this),
        contentType: false,
        cache: false,
        processData: false,
        success: function(data, textStatus, jqXHR) {
            console.log(data.success);
        },
        error: function (data, textStatus, jqXHR) {
            alert('Uh oh, we could not upload your customers.');
        },
        dataType: "json"
    });
});

AJAX最终会调用此PHP函数:

function uploadCustomers($file_name) {
            // Now we just have to open and read
            $myfile = fopen($file_name, "r") or die("Unable to open file.");
            $columns = fgetcsv($myfile);
            //$sortedColumns = sortColumns($columns); // works when this line is commented out
            while(!feof($myfile)) {
                $row = fgetcsv($myfile);
            }
            fclose($myfile);
            return json_encode(array('success' => $row));
        }

这是我第一次使用AJAX上传文件。我知道执行正在使用正确的参数进入PHP函数,因为我能够打开文件,并在函数工作时查看$row。 (评论sortColumns函数时。)

当我致电sortColumns时,为了按照我们要查找的顺序获取CSV字段,该功能突然不再起作用了。现在,这是我的sortColumns函数。

function sortColumns($columns) {
            return $columns;
        }

我哪里错了?我怀疑这是明显的事情,或者是我没有遵循的一些AJAX规则。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

感谢@AndreaBogazzi将我指向日志文件的位置。

日志文件说我正在调用一个未定义的函数,事实证明,我需要调用函数:

$this->sortColumns($columns);