Неопределенный индекс: ошибка в ajax POST и / или php-скрипт?

Я пытаюсь отправить 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"); } );