gpt4 book ai didi

javascript - 使用 php 和 js 从客户端执行服务器和客户端功能

转载 作者:行者123 更新时间:2023-11-27 23:38:02 25 4
gpt4 key购买 nike

客户端按下按钮后 - 必须执行服务器端函数,并根据结果执行不同的客户端函数。

为了实现这一点,我使用了 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 函数使用响应文本上的开关并执行合适的客户端函数...

感觉有更好的方法来做到这一点....任何改进建议将不胜感激..:)

最佳答案

我建议您:

  1. 删除 switch case(这通常效率低下并且往往会变得非常冗长)
  2. 将完整 URL 传递给函数
  3. 将回调列表传递给函数,这样您就不会依赖回调的全局定义

代码如下:

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');
},
}
);

请告诉我这是否有帮助。

谢谢

关于javascript - 使用 php 和 js 从客户端执行服务器和客户端功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33957570/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com