X-Cart: shopping cart software

X-Cart forums (https://forum.x-cart.com/index.php)
-   General questions (X-Cart 5) (https://forum.x-cart.com/forumdisplay.php?f=66)
-   -   Dealing with ajax Request (https://forum.x-cart.com/showthread.php?t=76093)

Soptareanu Alex 03-14-2018 02:49 AM

Dealing with ajax Request
 
I need to show a message on page after an ajax request is done. In my controller I use \XLite\Core\TopMessage::addInfo() interface, but the message I can see only if I reload the page after recive the response from server.
This is my controller :
if($this->isAJAX()){

$return = array(
'deliveryDate' => 'Some data',
'orderId' => 'Some data
);

$return = json_encode($return);
header('Content-Type: application/json; charset=UTF-8');
header('Content-Lenght: '.strlen($return));
header('ETag:' . md5($return));

\XLite\Core\TopMessage::addInfo(
'Your delivery date is ' . date('d-M-Y', $deliveryDate)
);

echo $return;
}

die();
}

And this is the function responsable to do the ajax request
function changeDate(_deliveryDate, _orderId){
//console.log(_deliveryDate);
//popup.openAsWait();
var shippingMethods = jQuery('.embed_calendar');
assignShadeOverlay(shippingMethods, true);
core.post(
URLHandler.buildURL({
target : 'calendar',
action : 'changedate',
deliveryDate: _deliveryDate,
orderId : _orderId
})
).done(function(response){
//console.log(response);
//popup.close();
var shippingMethods = jQuery('.embed_calendar');
unassignShadeOverlay(shippingMethods, true);
})
}

Is there a posibility to view the message after the request is done in this mode ?

tony_sologubov 03-15-2018 05:36 AM

Re: Dealing with ajax Request
 
Hi @Alex,

Add the following code:
Code:

$this->translateTopMessagesToHTTPHeaders();

anywhere after this one:
Code:

            \XLite\Core\TopMessage::addInfo(
                'Your delivery date is ' . date('d-M-Y', $deliveryDate)
            );


in your controller class.

Tony

Quote:

Originally Posted by Soptareanu Alex
I need to show a message on page after an ajax request is done. In my controller I use \XLite\Core\TopMessage::addInfo() interface, but the message I can see only if I reload the page after recive the response from server.
This is my controller :
if($this->isAJAX()){

$return = array(
'deliveryDate' => 'Some data',
'orderId' => 'Some data
);

$return = json_encode($return);
header('Content-Type: application/json; charset=UTF-8');
header('Content-Lenght: '.strlen($return));
header('ETag:' . md5($return));

\XLite\Core\TopMessage::addInfo(
'Your delivery date is ' . date('d-M-Y', $deliveryDate)
);

echo $return;
}

die();
}

And this is the function responsable to do the ajax request
function changeDate(_deliveryDate, _orderId){
//console.log(_deliveryDate);
//popup.openAsWait();
var shippingMethods = jQuery('.embed_calendar');
assignShadeOverlay(shippingMethods, true);
core.post(
URLHandler.buildURL({
target : 'calendar',
action : 'changedate',
deliveryDate: _deliveryDate,
orderId : _orderId
})
).done(function(response){
//console.log(response);
//popup.close();
var shippingMethods = jQuery('.embed_calendar');
unassignShadeOverlay(shippingMethods, true);
})
}

Is there a posibility to view the message after the request is done in this mode ?



All times are GMT -8. The time now is 03:45 PM.

Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.