2012-05-20 31 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應用上運行。 –