Иметь форму с методом = post, см. Ниже:
<form action="/includes/process.php" method="post">
<input type="hidden" name="breakDown" value="1" />
<input type="hidden" name="string" value="2" />
<a href="javascript:;" class="btn btn-primary itemCheckout add-cart formSubmitCheckout">Checkout</a>
</form>
И это JS, который отправляет форму, когда пользователь нажимает ссылку Checkout (<a>
):
$('.formSubmitCheckout').click(function() {
var t=$(this);
var isItemCheckout = t.hasClass('itemCheckout');
var form = t.parents('form');
if(!isItemCheckout) {console.log('testOk');console.log($('form').serialize());
form.submit();
}
});
Код перенаправляет нас в правильное местоположение process.php, как и должно быть, но массив $ _POST не создается. Это то, что я получаю в intellij:
Я попробовал тот же процесс в Firefox и Safari, и результат тот же: нет $ _POST.
if (isset($_POST['string'])) { display something ...
Делать console.log($('form').serialize());
внутри $('.formSubmitCheckout'){...
Я вижу переменную «строка» (это имя переменной) string=type%3Dpurchase%26priceAmo
,
Итак, суть в том, что $ _POST не создается на стороне php в process.php.
Кто-то знает, что происходит и может объяснить, как это исправить?
Есть несколько решений:
1) вы можете использовать $ _REQUEST вместо $ _POST
2) проблема может быть в .htaccess. Чтобы это исправить, вы должны добавить это правило в htaccess:
RewriteRule ^includes/process.php - [PT]
3) убедитесь, что у вас есть права на чтение / запись для файла «includes / process.php». если так: sudo chmod 0777 includes/process.php
4) добавить атрибут: enctype="application/x-www-form-urlencoded"
к вашей форме
5) проверьте свой php.ini. Там должен быть:
post_max_size = 8M
variables_order = "EGPCS"
затем перезагрузите сервер
Других решений пока нет …