I'm having problem with this ajax function, fires always "fail" but everything is inserted into my database
$(document).ready(function () {
$("#formacao").submit(function (e) {
e.preventDefault();
var formData = new FormData($(this)[0]);
var ajaxDivAlert = $('#ajaxDivAlert');
var ajaxDivOk = $('#ajaxDivOk');
var ajaxDivErro = $('#ajaxDivErro');
$.ajax({
url: 'nova_formacaoBD.php',
type: 'POST',
data: formData,
cache: false,
contentType: false,
processData: false,
beforeSend: function () {
ajaxDivAlert.empty().html('A carregar o ficheiro...aguarde por favor');
}
}).done(function (data) {
var result = data.status;
console.log(result);
if (result === 'success'){
ajaxDivOk.empty().fadeIn().html('Informação: ' + data.message).fadeOut(5000);
}
}).fail(function (xhr, status, error) {
console.log("Status: " + status + " Error: " + error);
console.log(xhr);
ajaxDivErro.empty().fadeIn().html('Esta formação já está registada na base de dados').fadeOut(5000);
});
});
});
From "fail" i receive this
Status: parsererror Error: SyntaxError: Unexpected token F
superNewFormacao.php:244 Object {readyState: 4, responseText: "Formação{"status":"success","message":"Nova forma\u00e7\u00e3o gravada"}", status: 200, statusText: "OK"}
That line is
console.log("Status: " + status + " Error: " + error);
And my json_encode is
echo json_encode(array('status' => 'success', 'message' => 'Nova formação gravada'));
So whats wrong? Thanks
UPDATE
This is my php for insert
header('Content-Type: application/json');
error_reporting(E_ALL | E_NOTICE);
ini_set('display_errors', '1');
$mysqli = new mysqli('localhost', 'xxxxx', 'xxxxxx');
if (mysqli_connect_errno()) {
trigger_error('Database connection failed: ' . mysqli_connect_error(), E_USER_ERROR);
}
mysqli_set_charset($mysqli, "utf8");
$uploaddir = $_SERVER['DOCUMENT_ROOT'] . '/uploads';
$uploadfile = $uploaddir . '/' . basename($_FILES['fileToUpload']['name']);
$escola = filter_input(INPUT_POST, 'escola');
$form = filter_input(INPUT_POST, 'form');
$data = filter_input(INPUT_POST, 'data');
$horas = filter_input(INPUT_POST, 'horas');
$local = filter_input(INPUT_POST, 'local');
$dest = filter_input(INPUT_POST, 'dest');
$datas = filter_input(INPUT_POST, 'datas');
$visto = 0;
echo $form;
if (move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $uploadfile)) {
$target_path = "/uploads/" . basename($_FILES['fileToUpload']['name']);
$sql = "INSERT INTO `ebspma_paad_ebspma`.`formacoes`(idescola, nome, inicio, horas, local, destinatarios, dataLimite, visto, path) VALUES(?, ?, ?, ?, ? ,?, ?, ?, ? )";
$stmt = $mysqli->prepare($sql);
if ($stmt === false) {
trigger_error('Wrong SQL: ' . $sql . ' Error: ' . $mysqli->error, E_USER_ERROR);
}
$stmt->bind_param('issssssis', $escola, $form, $data, $horas, $local, $dest, $datas, $visto, $target_path);
if (!$stmt->execute()) {
echo json_encode(array('status' => 'error', 'message' => 'Opppss...A formação não foi gravada'));
}
} else {
echo json_encode(array('status' => 'error', 'message' => 'Opppss...A formação não foi gravada'));
}
$stmt->close();
echo json_encode(array('status' => 'success', 'message' => 'Nova formação gravada'));