Я хочу передать JSON с php на js.
Это мой php-файл:
public function upload() { $record = 0; if (!empty($_FILES)) { $config['upload_path'] = "./assets/uploads"; $config['allowed_types'] = 'csv'; $this->load->library('upload', $config); if (!$this->upload->do_upload("file")) { echo "File cannot be uploaded"; } else { $upload_data = $this->upload->data(); $csv = $upload_data['full_path']; $name_csv = $upload_data['file_name']; $tryOne = array(); if (file_exists($csv)) { $file = fopen($csv, 'r'); // r flag is for readonly mode while (( $line = fgetcsv($file) ) !== false) { // if line exists $tryOne[] = $line; // add to array } fclose($file); } echo json_encode(array( "nama_csv" => $name_csv, "path" => $csv, "isi" => $tryOne )); } } elseif ($this->input->post('file_to_remove')) { $file_to_remove = $this->input->post('file_to_remove'); unlink("./assets/uploads/" . $file_to_remove); } else { $this->listFiles(); } }
См. Mv json. Я его отлаживаю: print_r($tryOne);
Array ( [0] => Array ( [0] => NO [1] => COLUMN1 [2] => COLUMN2 [3] => COLUMN3 [4] => COLUMN4 [5] => COLUMN5 [6] => COLUMN6 [7] => COLUMN7 [8] => COLUMN8 [9] => COULMN9 [10] => COLUMN10 [11] => COLUMN11 [12] => COLUMN12 [13] => COLUMN13 ) [1] => Array ( [0] => 1 [1] => NYK FUJI [2] => AJU150708 [3] => [4] => 6C7132 [5] => 977NEF [6] => JKT-PTIRON WORKS [7] => 977NEF [8] => KCH8ATDM [9] => 17.9 [10] => 1690 [11] => 2150 [12] => 6C7132-1690 [13] => 175 ) [2] => Array ( [0] => 2 [1] => NYK FUJI [2] => AJU150708 [3] => [4] => 6C7132 [5] => 977NEF [6] => JKT-PTIRON WORKS [7] => 977NEF [8] => KCH8ATDM [9] => 17.9 [10] => 1700 [11] => 2138 [12] => 6C7132-1700 [13] => 176 ) )
Все выглядит хорошо. Но в ajax успех:
success: function (response) { moment.locale("id"); for (i = 0; i <= response.isi.length; i++) { for (j = 0; j <= response.isi[i].length; j++) { $('#table-review').find('tbody').append("<tr>" + "<td>" + response.isi[i][j] + "</td>" + "</tr>"); } } $("#btnSave").attr("onclick", "save('" + response.path + "', '" + response.nama_csv + "')"); $('#modal_form').modal('show'); // show bootstrap modal $('.modal-title').text('Review Data Hasil Upload Dari CSV Pusat'); // Set Title to Bootstrap modal title reload_table(); listFilesOnServer(); },
дает мне: TypeError: response.isi [i] не определено
Я хочу отобразить этот массив в таблице в модальном бутстрапе, поэтому я снова отлаживаю его, чтобы узнать, существует ли response.isi: console.log(response.isi)
[["NO", "COLUMN1", "COLUMN2", 11 more...]
Я немного смущен, почему в массиве php и js массив выглядит как разные, в php разделяется на элемент, а в js разделяется запятой.
ОБНОВИТЬ
Основанное предложение ниже, я получил обратный вызов следующим образом:
Object { 0="NO", 1="COLUMN1", 2="COLUMN2", more...} Object { 0="1", 1="NYK FUJI", 2="AJU150708 ", more...} Object { 0="2", 1="NYK FUJI", 2="AJU150708 ", more...}
Итак, я использую для циклизации следующим образом:
index = 1; $.each(response.isi, function (i, item) { $('#table-review').find('tbody').append("<tr>" + "<td>" + index + "</td>" + "<td>" + item.i + "</td>" + "</tr>"); index++; console.log(item); });
это дает мне:
+---+-----------+ | 1 | undefined | | 2 | undefined | | 3 | undefined | +---+-----------+
Пожалуйста, порекомендуйте.