После того, как клиент нажмет кнопку — должна выполняться функция на стороне сервера, и в соответствии с результатом будут выполняться различные функции на стороне клиента.
Чтобы добиться этого, я использовал AJAX и написал эту функцию:
function invoke_php(file_name, parameters){
parameters = typeof parameters !== 'undefined' ? parameters : '';
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
switch (xmlhttp.responseText) {
case "func1":
func1();
break;
case "func2":
func2();
break;
default:
default_func();
}
}
};
xmlhttp.open("POST", file_name+"?"+parameters, true);
xmlhttp.send();
}
Функциональность на стороне сервера выполняется в отдельном php-файле, который возвращает имя функции для запуска. функция invoke_php использует переключение текста ответа и выполняет подходящую функцию на стороне клиента …
Такое чувство, что есть лучший способ сделать это …. Любое предложение по улучшению будет оценено .. 🙂
Я бы порекомендовал вам:
Вот как может выглядеть код:
function invoke_php(url, callbacks){
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200 && callbacks) {
var fn = callbacks[xmlhttp.responseText] || callbacks._default || function () {};
fn();
}
};
xmlhttp.open("POST", url, true);
xmlhttp.send();
}
invoke_php(
'test.php?myparams=true',
{
_default: function () {},
func1: function () {
console.log('func1');
},
func2: function () {
console.log('func2');
},
}
);
Позвольте мне знать, если это помогает.
Спасибо
Других решений пока нет …