Написал небольшой скрипт для службы доставки Axiomus.
Теперь вопрос как его интегрировать в сам движок ?
Код выглядит так
<script>
if(navigator.geolocation){
navigator.geolocation.getCurrentPosition(function(res){
conf.geo.lon=res.longitude;
conf.geo.lat=res.latitude;
console.log(res);
mod.geo(conf.geo);
});
}
</script>
<div>
<p>Ближайшие отделения</p>
<div class="result"><>
<>
<hr align="left" width="300" size="4" color="#ff9900" />
<p>Адресная доставка</p>
<input type="button" onclick="javascript:mod.delivery(conf.delivery)" value="Старт!" />
<div class="result"><>
<hr align="left" width="300" size="4" color="#ff9900" />
<div>
<p>Самовывоз</p>
<input type="button" onclick="javascript:mod.carry(conf.carry)" value="Старт!" />
<div class="result"><>
<>
<hr align="left" width="300" size="4" color="#ff9900" />
и файл js
var conf={
geo:{
"method": "point",
"token" : '76793d5test0cf77',///
},
carry:{
"method": "carry",
"type_company" : 0,
"code": "194300",///
"token" : "76793d5test0cf77",///
//"weight" : 4.2,///
//"x" : 14,///
//"y" : 32,///
//"z" : 20,///
},
delivery:{
"method": "delivery",
"type_company" : 0,
//"city" : "Москва",///
"token" : "76793d5test0cf77",///
/*"area" : "Москва",///
"address" : "Москва, Тверская 6",///
"x" : 10,///
"y" : 10,///
"z" : 10,///*/
}
};
var mod={
geo:function(json){
var answer = document.getElementsByClassName('result')[0];
var send_data = null;
var xhr = new XMLHttpRequest();
xhr.open("POST", 'https://axiomus.ru/calc/api_geo.php', true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.timeout = 30000;
for(key in json) {
if(send_data === null)
send_data = key+'='+json[key];
else
send_data = send_data+'&'+key+'='+json[key];
}
xhr.send(send_data);
xhr.onreadystatechange = function(){
if(xhr.readyState === 4 && xhr.status === 200){
var arr=JSON.parse(xhr.responseText);
arr=arr.pvz;
for (var i = 0; i < arr.length; i++) {
var el=document.createElement('div');
el.innerHTML='<p>'+arr[i].company+'</p>'+'<p>'+arr.name+'</p>'+'<p>'+arr.address+'</p>'+'<p>'+arr.schedule+'</p>'+'<p>'+arr.dist+'</p>'+'<p>'+arr.distance+'</p>';
answer.appendChild(el);
}
}
};
xhr.ontimeout = function(){
answer.innerHTML = 'Время ожидания (30 секунд) истекло :(';
};
xhr.onerror = function(){
answer.innerHTML = 'Ошибка отправки запроса!';
};
},
delivery:function(json){
var answer = document.getElementsByClassName('result')[1];
var send_data = null;
var xhr = new XMLHttpRequest();
xhr.open("POST", 'https://axiomus.ru/calc/calc.php', true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.timeout = 30000;
for(key in json) {
if(send_data === null){
send_data = key+'='+json[key];
}else{
send_data = send_data+'&'+key+'='+json[key];
}
}
xhr.send(send_data);
xhr.onreadystatechange = function(){
if(xhr.readyState === 4 && xhr.status === 200){
answer.innerHTML = xhr.responseText;
}else{
answer.innerHTML = 'Ошибка запроса!';
}
};
xhr.ontimeout = function(){
answer.innerHTML = 'Время ожидания (30 секунд) истекло :(';
};
xhr.onerror = function(){
answer.innerHTML = 'Ошибка отправки запроса!';
};
},
carry:function(json){
var answer = document.getElementsByClassName('result')[2];
var send_data = null;
var xhr = new XMLHttpRequest();
xhr.open("POST", 'https://axiomus.ru/calc/calc.php', true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.timeout = 30000;
for(key in json) {
if(send_data === null){
send_data = key+'='+json[key];
}else{
send_data = send_data+'&'+key+'='+json[key];
}
}
xhr.send(send_data);
xhr.onreadystatechange = function(){
if(xhr.readyState === 4 && xhr.status === 200){
answer.innerHTML = xhr.responseText;
}else{
answer.innerHTML = 'Ошибка запроса!';
}
};
xhr.ontimeout = function(){
answer.innerHTML = 'Время ожидания (30 секунд) истекло :(';
};
xhr.onerror = function(){
answer.innerHTML = 'Ошибка отправки запроса!';
};
}
}[/i]