【发布时间】:2015-02-09 19:31:54
【问题描述】:
(Newb here) 我有一个 PHP 函数,它从服务器获取 2 个 csv 文件并创建一个新的文件,其中包含这些文件中包含的值之间的差异。这个 PHP 函数位于一个单独的文件 test.php 中,如下所示:
<?php
require_once('libs/parsecsv-for-php-master/parsecsv.lib.php');
$csv1name = $_POST['csv1'];
$csv2name = $_POST['csv2'];
$data1 = 'data/'.$csv1name.'.csv';
$data2 = 'data/'.$csv2name.'.csv';
$csv1 = new parseCSV($data1);
$csv2 = new parseCSV($data2);
$csv = new parseCSV();
$csv->data[0] = array('label','difference');
$j = 1;
for ($i = 0; $i < count($csv1->data); $i++) {
$csv->data[$i+1] = array($j.'d',$csv1->data[$i][$csv1name] - $csv2->data[$i][$csv2name]);
if($i == 0) {$j += 20;}
else {$j += 21;}
}
$csv->save('test.csv');
?>
此函数正常工作并生成预期的 csv 文件。
我有一个 JavaScript 函数,它位于另一个页面(即 update.html)并通过 ajax 调用上述 php 函数:
function callPHP() {
$.ajax({
type:"POST",
url:"test.php",
dataType:"json",
data:{csv1: '02-01-2015', csv2: '02-12-2014'},
error: function(requestObject, error, errorThrown) {
alert(error);
alert(errorThrown);
},
});
}
问题:错误函数总是执行,也就是说,每当我运行 callPHP() 时,我都会收到两个警报。
问题:为什么总是调用错误?
(额外:是否可以使用response 变量?如何调试它而不必每次都将文件上传到服务器?是否保证在调用complete 函数时,@ 987654327@函数已经解决了吗?)
感谢您的帮助!!! :D
更新 1:我通过从 ajax 中删除 complete 函数更改了上面的代码,并向 error 函数添加了一些额外的参数。
【问题讨论】:
-
当警报被触发时,
response是什么? -
在警报处设置断点并查看调用堆栈。这可能会有所启发。
-
我认为
complete总是被调用,无论我认为你在寻找什么success -
你的 php 脚本没有返回 JSON
-
@cmorrissey 我在错误函数中添加了一些参数并删除了完整的函数。当我运行它时,我得到了一些额外的信息:
alert(error)给出了parseerror和alert(errorThrown)显示SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data。我猜测 ajax 正在隐式尝试解析页面并发现错误,但我不知道它可能是什么。
标签: javascript php jquery ajax csv