[英]jQuery.ajax + php 5.3 - always executing error function
(這里是Newb)我有一個PHP函數,該函數從服務器獲取2個csv文件,並使用這些文件中包含的值之間的差異創建一個新的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
函數時, $csv->data
函數已經存在解決?)
謝謝你的幫助! :d
更新1:我通過從ajax中刪除complete
功能更改了上面的代碼,並向error
功能添加了一些額外的參數。
不論成功與否,總是稱“完成”。 因此,您將遇到錯誤情況,並且在執行錯誤后無論如何都會調用complete。 您可以在錯誤函數中添加其他參數(jqXHR,jqXHR,String textStatus,String errorThrown)以找出錯誤所在。
嘗試使用success
代替complete
,並向您的PHP腳本添加JSON答案,例如echo json_encode((object) array('success'=>true));
因為您的AJAX調用具有用於JSON響應的dataType:"json"
參數,所以您的AJAX調用將嘗試解析JSON。
PHP代碼:
header('Content-Type: application/json');
echo json_encode((object) array('success'=>true));
AJAX:
function callPHP() {
$.ajax({
type:"POST",
url:"test.php",
dataType:"json",
data:{csv1: '02-01-2015', csv2: '02-12-2014'},
success: function(response) {
alert(response);
},
error: function(response) {
alert(response);
},
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.