簡體   English   中英

jQuery.ajax + PHP 5.3-始終執行錯誤功能

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM