Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Выполнение php при нажатии на кнопку (https://javascript.ru/forum/misc/74683-vypolnenie-php-pri-nazhatii-na-knopku.html)

_marisha 31.07.2018 13:32

Выполнение php при нажатии на кнопку
 
Доброго времени суток!
Необходимо при нажатии на кнопку выполнить php код.
Кнопка:
<button type="submit" onclick="want_credit();return false;" name="submitIdentity" id="submitIdentity" value="Button" style="background: #0a51ae;">
                                    <span><?=GetMessage("LIKEE_ESTORE_KUPITQ_V_CREDIT")?></span>
                                </button>

После нажатия на кнопку должен выполняться php код, который производит создание заказа.
Данный php находится в том же файле, что и кнопка.
Подскажите, пожалуйста, каким образом сделать так, чтобы php код выполнился именно после нажатия кнопки.

На всякий случай php код:
global $USER;
$rsUser = CUser::GetByID($USER->GetID());
$arUser = $rsUser->Fetch();
$products = array(
array(
'PRODUCT_ID' => $arResult['ID'],
'NAME' => $arResult['NAME'],
 'PRICE' => $arResult['PRICES']['Розничная']['DISCOUNT_VALUE'],
'CURRENCY' => 'RUB',
'QUANTITY' => 1
)
);
$basket = Bitrix\Sale\Basket::create(SITE_ID);
 
foreach ($products as $product)
{
$item = $basket->createItem("catalog", $product["PRODUCT_ID"]);
unset($product["PRODUCT_ID"]);
$item->setFields($product);
}
$order = Bitrix\Sale\Order::create(SITE_ID, $USER->GetID());
$order->setBasket($basket);
$shipmentCollection = $order->getShipmentCollection();
$shipment = $shipmentCollection->createItem(
                                    Bitrix\Sale\Delivery\Services\Manager::getObjectById(1)
);
$shipmentItemCollection = $shipment->getShipmentItemCollection();
 
foreach ($basket as $basketItem)
{
$item = $shipmentItemCollection->createItem($basketItem);
$item->setQuantity($basketItem->getQuantity());
}
$paymentCollection = $order->getPaymentCollection();
$payment = $paymentCollection->createItem(
Bitrix\Sale\PaySystem\Manager::getObjectById(1)
);

$payment->setField("SUM", $order->getPrice());
$payment->setField("CURRENCY", $order->getCurrency());
$result = $order->save();

ksa 01.08.2018 08:37

Цитата:

Сообщение от _marisha
каким образом сделать так, чтобы php код выполнился именно после нажатия кнопки

Отправить запрос на сервер, там его обработать и выполнить нужный код.

_marisha 01.08.2018 10:55

ksa, спасибо что откликнулись )
Если сделать так:
function new_order() {
$(document).ready(function() {
$("submit").click(function () {
$.ajax({
 type: 'POST',
url: window.location.href,
success: function (data) {
alert(data);
$("p").text(data);
}
});
});
}

Кнопка:
<div class="form-group">
                                <form method="post">
                                <button type="submit" onclick="want_credit();return false;new_order();" name="submitData" id="submitIdentity" value="Button" style="background: #0a51ae;">
                                    <span><?=GetMessage("LIKEE_ESTORE_KUPITQ_V_CREDIT")?></span>
                                </button>
                                </form>
                            </div>

В таком случае при нажатии на кнопку создается заказ, но не открывается форма want_credit() - это форма для оформления кредита, которая должна открывать по нажатию кнопки "В кредит".
Т.е. по нажатию на кнопку "В кредит" должен создаваться заказ и открываться форма.

laimas 02.08.2018 14:35

onclick="want_credit();return false;new_order();" - если сервер оформляет заказ, по результату которого нужно оформить кредит и это want_credit(), то никаких onclick, просто отправляем форму, ждем ответ сервера, и только потом оформляем кредит.


Часовой пояс GMT +3, время: 17:35.