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

时间:2015-11-27 12:35:14

标签: javascript php client-server

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

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

感觉有更好的方法来做到这一点......任何改进建议都将受到赞赏.. :)

1 个答案:

答案 0 :(得分:1)

我建议你:

  1. 删除开关盒(通常效率不高,往往变得非常冗长)
  2. 将完整的URL传递给函数
  3. 将回调列表传递给函数,这样您就不会依赖回调的全局定义
  4. 这是代码的样子:

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

    如果有帮助,请告诉我。

    由于