好吧,我有一個表單,您可以選擇一個CSV文件,當您點擊sales_importer按鈕時,我想讓我的java調用我的php函數並獲取返回的多維數組,然後再進行處理。當我運行下面的代碼時,我得到了一個多維數組值的警告框,但它看起來像是字符串形式。當我做alert(result[0][0]);
時,我在我的警報框中獲得[
。Ajax發送FormData並檢索多維數組
我已經嘗試在我的ajax調用中更改我的dataType到json,但然後它只是失敗,但我仍然從我的瀏覽器得到200響應。有關可能會發生什麼/如何解決它的任何建議?
JS
$('body').on('click', '#sales_importer', function() {
$.ajax({
type: 'POST',
data: new FormData($('form[id="import_form"]')[0]),
cache: false,
contentType: false,
processData: false,
url: admin_url+'Clients/import',
success: function(result){
alert(result);
}
});
});
PHP
public function import()
{
if ($this->input->is_ajax_request()) {
if (isset($_FILES['client_file_csv']['name']) && $_FILES['client_file_csv']['name'] != '') {
// Get the temp file path
$tmpFilePath = $_FILES['client_file_csv']['tmp_name'];
// Make sure we have a filepath
if (!empty($tmpFilePath) && $tmpFilePath != '') {
// Setup our new file path
$newFilePath = TEMP_FOLDER . $_FILES['client_file_csv']['name'];
if (!file_exists(TEMP_FOLDER)) {
mkdir(TEMP_FOLDER, 777);
}
if (move_uploaded_file($tmpFilePath, $newFilePath)) {
$import_result = true;
$fd = fopen($newFilePath, 'r');
$rows = array();
while ($row = fgetcsv($fd)) {
$rows[] = $row;
}
$data['total_rows_post'] = count($rows);
fclose($fd);
echo json_encode($rows);
}
unlink($newFilePath);
}
}
}
}
您可以嘗試序列化並將$ rows的內容記錄到服務器,以便檢查響應中返回的內容。 –
@BrianGottier當我將響應序列化到日誌時,這是響應的開始。一:520:{I:0;一個:16:{I:0; S:10: 「公司」; I:1; S:11: 「PHONENUMBER」; I:2; S:8: 「main_fax」; I:3; S:13: 「vehiclenumber」; I:4; S:4: 「城市」; I:5; S:5: 「狀態」; I:6; S:7: 「地址」; I: 7; s:6:「縣」; i:8; s:3:「zip」; i:9; s:7:「網站」; i:10; s:13:「代理狀態」; i:11 ; s:16:「內部銷售代表」; i:12; s:17:「外部銷售代表」; i:13; s:5:「註釋」; i:14; s:21:「其他機構評論」 ;我:15; S:10:「記錄ID#」;} –
我不知道我,A和S是什麼,但CSV的第一行確實說:公司,電話號碼,main_fax,vehiclenumber等。如果我打印它json_encoded與序列化我得到:[[「\ ufeffcompany」,「phonenumber」,「main_fax」,「vehiclenumber」,「城市」,「州」,「地址」,「縣」,「郵編「,」網站「,」代理機構狀態「,」內部銷售代表「,」外部銷售代表「,」註釋「,」其他機構評論「,」記錄ID#「]等。 –