Я пытаюсь отправить ajax POST в php-файл, однако php-файл отправляет уведомление об «неопределенном индексе», а файл php никогда не получает значения, которые я пытаюсь отправить. Я искал ответ на вопрос, почему это работает неправильно, поэтому, надеюсь, кто-то может дать мне некоторое представление.
Моя функция javascript получает значение из html и получает правильное значение. (в этом случае это «1»)
function deleteMediaFromDatabase(val) { $.ajax({ url: 'deleteMediaFromDatabase.php', data: {vals : val}, type: 'post', success: function(output) { alert(output); }, error: function(request, status, error){ alert("Error: Could not delete"); } }); }
Вот часть моего php-файла, который должен получить сообщение:
<?php ini_set("display_errors", "On"); error_reporting(E_ALL); $val = $_POST["vals"]; // create connection $con = mysqli_connect(<stuff you don't care about>); error_log($val . ' is the value', 3, "./error.log"); ?>
Я получаю это сообщение об ошибке от php:
Примечание. Неопределенный индекс: vals в /xxx/xxx/htdocs/AdminPanel/deleteMediaFromDatabase.php в строке 9
И мой javascript всегда выводит предупреждение в ошибке: «Ошибка: не удалось удалить»
Я знаю, что этот вопрос задавали и отвечали много раз, однако, если я не пропущу что-то маленькое, мой код, для меня, выглядит правильно. (но не всегда)
В синтаксисе jquery есть ошибка. Вы пропустили синтаксис данных. Это должно быть так:
function deleteMediaFromDatabase(val) { $.ajax({ url: 'deleteMediaFromDatabase.php', data: {'vals' : val}, type: 'post', dataType:'json', success: function(output) { alert(output); }, error: function(request, status, error){ alert("Error: Could not delete"); } }); }
Проблема может возникнуть из-за того, что указанный тип данных не указан или что указанный тип данных не совпадает, таким образом, возвращенный сервером.
Явным образом задайте тип данных, например dataType:'json'
и убедитесь, что ваш скрипт возвращает данные, которые «закодированы» в выбранном вами типе данных, например, в PHP:
echo json_encode($something);
Вместо:
$val = $_POST["vals"];
использовать это:
if (isset($_POST['vals']) { $val = $_POST['vals']; }
Изменить синтаксис Ajax …
$.ajax({ type: "POST", url: 'deleteMediaFromDatabase.php', data: {'vals' : val},//Have u tried this success: function(output) { alert(output); } error: function(request, status, error){ alert("Error: Could not delete"); } );