2012-05-20 35 views
1

我有一个表格,并提交表单的URL会动态地生成jQuery的动态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} 
} 
+0

你使用任何框架? –

+0

请缩进你的代码,我们不应该为你做。 – gdoron

+0

@gdoron我正在谈论PHP的结局。他使用任何PHP框架? –

回答

2

如果需要此功能为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 
    } 
} 
+0

好的谢谢你,但如果只有1个参数,代码参数2将是未知的,你的代码将会出错 – LinCR

+0

@LinCR实际上'func_get_arg'返回'false' if该参数不存在,因此两个测试检查参数是否存在。 – mc10

+0

我得到了这个错误'注意:未定义的偏移量:0'但我的方法是'方法(var1,var2)' – LinCR

0
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; 
} 
+0

谢谢亲爱的,你总是在帮我,但是这次我问的是服务器上的功能,而不是我的jQuery – LinCR

+1

@LinCR欢迎队友。乐意效劳。 – thecodeparadox

+0

PHP甚至不是有效的......你不用'var'定义变量,也不用'$'来定义变量。 '||'技巧在PHP中也不起作用,并且不能像上面那样“+”串起来。 – mc10

2

如果所有三个URL调用你的服务器,你可以在单一方法使用default argument机制

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); 
+0

OMG,我没有明白你的意思,因为我是新来的PHP和新的jQuery,我upvote你的答案,真的非常感谢你的帮助,抱歉,因为我不懂你的工作,我的英语甚至不好,真的很感谢你 – LinCR

+1

重要的是你了解我的代码。因为几乎相同的代码正在您的Web应用上运行。 –