У меня есть вид клиента, который вызывает файл PHP через AJAX для обновления базы данных за формой. Взгляд основные операции CRUD, и состоит в основном из формы и набора входов:Ajax вызов не возвращает ошибку JSON
HTML
<div class="item-details">
<form id="item-info-form">
<input type="hidden" name="id" value="1" />
<input type="text" name="name" size="50" value="Item 1" />
<input type="text" id="start_date" name="start_date" value="2012-01-13" />
<input type="text" id="end_date" name="end_date" value="2014-02-03" />
<input type="text" name="location" size="50" value="Home" />
<select name="item_type">
<option value="1" selected="selected"> Type 1 </option>
<option value="2"> Type 2 </option>
<option value="3"> Type 3 </option>
</select>
<button id="update-item-info">Save Changes</button>
</form>
После нажатия кнопки, я называю PHP скрипт для обновления элемента в вопросе через AJAX.
Javascript
$('#update-item-info').on('click', function (e)
{
e.preventDefault();
console.log("Updating Item Info...");
$.ajax({
type: "POST",
url: "AJAX/save-item-info.php",
data: $('#item-info-form').serialize(),
dataType: "application/JSON"
}).done(function (data)
{
console.log(data.status);
});
});
РНР сервера, что этот код будет размещен на это:
<?php
include("../db-connection.php");
$mysqli = new mysqli($mysqli_host, $mysqli_user, $mysqli_pass, $db_name);
if ($mysqli->connect_errno)
{
$response_array['status'] = "Connect failed: %s\n" . $mysqli->connect_error;
}
if(!($stmt = $mysqli->prepare("UPDATE items SET name = ?, start_date = ?, end_date = ?, location = ?, exhibit_type = ? WHERE id = ?")))
{
$response_array['status'] = "Prepare Statement failed: " . $mysqli->error . "\n";
}
if (!($stmt->bind_param('sssssi', $_POST['name'], $_POST['start_date'], $_POST['end_date'], $_POST['location'], $_POST['exhibit_type'], $_POST['id'])))
{
$response_array['status'] = "Binding parameters failed: " . $stmt->error . "\n";
}
if (!($stmt->execute()))
{
$response_array['status'] = "Execute failed: " . $stmt->error . "\n";
}
else
{
$response_array['status'] = "Success";
}
$stmt->close();
header('Content-type: application/json');
die(json_encode($response_array));
?>
Это делает обновление базы данных, и если все пойдет правильно, поджигатель говорит мне, что данные. статус установлен на «Успех».
НО, если я прокомментирую базу данных, включите (чтобы имитировать что-то ужасное), код сервера ничего не возвращает, а тем более data.status, и я просто получаю общую ошибку 500.
Как ни странно, независимо от того, обновлена база данных или нет, ajax.done() не запускается, поэтому я не вижу, установлено ли значение data.status.
'dataType:" json "' –