jquery dynamic url


jquery dynamic url

我有一个表单,提交表单的网址将动态生成

var Var1 = new Array();
var Var2 = new Array();
if(Var1.length === 0)
$(this).attr('action', 'http://localhost/Method' ).submit();
if(Var1.length != 0 && Var2.length === 0)
$(this).attr('action', 'http://localhost/Method/Var1').submit();
if(Var1.length != 0 && Var2.length != 0)
$(this).attr('action', 'http://localhost/Method/Var1/Var2').submit();

并且所有 URL 都会在服务器中触发一种方法,它是

public function Method(){}
public function Method(Var1){}
public function Method(Var1 , Var2){}

无论如何,可以将最后 3 种方法都作为一种方法吗? 像这样:

public function Method(Var1, Var2){
    if(  condition for Var1 ){// doSomthing}
    if(  condition for Var2 ){// doSomthing}
}

如果你在 PHP 中需要这个函数,你可以使用 func_get_argfunc_num_args

public function Method() {
    $numArguments = func_num_args();
    if ($numArguments >= 1) {
        $argument1 = func_get_arg(0);
        // Do something with argument 1
    }
    if ($numArguments >= 2) {
        $argument2 = func_get_arg(1);
        // Do something with argument 2
    }
}

如果所有三个 url 都调用服务器中的单个方法,则可以使用默认的参数机制

public function Method($Var1=null, $Var2=null){
    if(is_null($Var1)){// doSomthing}
    if(is_null($Var2)){// doSomthing}
}

显然,要映射这些URL,您需要使用某种路由器逻辑。并且路由器必须调度对象的正确方法。

例如,如果您的网址类似于 /index.php/Object/method/param1/param2index.php应该首先创建正确的对象。

$parts = explode('/', $_SERVER['REQEUST_URI']);
array_shift($parts); // emtpy part
array_shift($parts); // index.php
$cls = array_shift($parts) // Object
$obj = new $cls;

然后调度方法。

$method = array_shift($parts);
call_user_func_array(array($obj, $method), $parts);
public function Method(){
      $root = 'http://localhost/Method/',
      $Var1 = func_get_args(0) || '',
      $Var2 = func_get_args(1) || '';
  if($Var1 && $Var2) $root .= $Var1  + '/' + $Var2;
  else if($Var1 && !$Var2) $root .= '/' + $Var1;
}