Задать вопрос
@revuwem

Почему $_POST из ajax пустой?

Привет. Делаю форму, в которой нужно ввести адрес, а по нажатию на кнопку загрузить xlsx документ.
К php-скрипту обращаюсь через ajax, скрипт почему-то получает пустой $_POST.
Форма:
<form class="w-full flex-w flex-c-m validate-form" id="download-passport-form" method="post" >
				<div class="wrap-input100 validate-input where1" data-validate="Введите адрес">
					<input class="input100 placeholder0 s2-txt2" type="text" name="address" id="address" placeholder="Введите адрес">
					<span class="focus-input100"></span>
				</div>
				<button class="flex-c-m size3 s2-txt3 how-btn1 trans-04 where1" type="submit">
					Скачать
				</button>
			</form>


Обработчик формы:
$(document).ready(function() {
			$('#download-passport-form').submit(function(e) {
				e.preventDefault();
				address=($('#address').val());
				$.ajax({
					type: "POST",
					url: 'downloadpassport.php',
					dataType: 'text',					
					data: {'address':address},
					success: function(response) {
						window.open('./downloadpassport.php', '_blank');
					},
					error: function (xhr, status, error) {
						console.log(xhr.responseText);
					}
				});		
			});
		});


php-скрипт:
<?php
//header("Content-Type: application/json", true);
require 'vendor/autoload.php';
include('dbconnection.php');
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
//Если раскоментировать следующую строку - то isset($_POST) - true 
//$_POST["address"]="Мурманск, Скальная, 20";
//Таким образом $_POST приходит тоже пустой
// $rest_json=file_get_contents('php://input');
// $_POST=json_decode($rest_json);
if (isset($_POST["address"])){    
    header('HTTP/1.1 200 OK');
    //Дальше формируем документ...
}else{
// header('HTTP/1.1 500 Internal Server Error');
    echo "address doesn't exist\n";
    echo serialize($_POST); 
}


Результат php:
5d7b645d787e0563386804.png.
Консоль:
5d7b652f2af84695125815.jpeg
5d7b670dddb80128399486.jpeg

Вопрос: почему isset($_POST["adress"]) null?
  • Вопрос задан
  • 1118 просмотров
Подписаться 1 Средний 1 комментарий
Решения вопроса 1
@revuwem Автор вопроса
Помогло убрать ajax и оставить обработчик в таком виде:
$(document).ready(function() {
			$('#download-passport-form').submit(function(e) {
				e.preventDefault();
				address=($('#address').val());
				window.open('./downloadpassport.php?address='+address, '_blank');
				window.close();
			});
		});
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
usdglander
@usdglander Куратор тега PHP
Yipee-ki-yay
Потому что вы вы вызываете скрипт через get
window.open('./downloadpassport.php', '_blank');
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы