2016-12-15 251 views
0

我有一個php循環,它會生成幾個按鈕。每個按鈕都會更改特定div的內容,並通過使用ajax請求更新數據庫中的某些內容。當按鈕被點擊時,它會調用一個函數它執行ajax請求。問題是我不能在函數中傳遞Div id作爲參數,如果我將它與一個字符串連接起來。只有當我寫$ TickCrossDiv = $ i時它才起作用(僅當使用數字作爲Div id它的作用)。將php變量傳遞給javascript函數

這裏是我的代碼:

for($i=0;$i<count($PlanningArray);$i++){ 

     $TickCrossDiv = 'tickCrossDiv'.$i; 

    echo "<button onclick=\"SetActDone(
     ".$PlanningArray[$i]'PlanID'].", 
     ".$PlanningArray[$i]['ActID'].", 
     ".$TickCrossDiv.")\" > 
     Mark as done</button>" 
} 

下面是函數:

function SetActDone(PlanID,ActID,DivID) 
    { 
     $.ajax({ 

      type: "POST", 
      url: 'testAjax.php', 
      data: {PlanID:PlanID, ActID:ActID}, 
      success: function(data) { 

       $("#" + DivID).html('<p>Status: Done</p> <i style="color:greenyellow; " class="fa fa-check-circle fa-2x"></i>'); 
      } 
     }); 
    } 

我收到錯誤:

未捕獲的錯誤:語法錯誤,無法識別的表達式:#object HTMLDivElement

回答

1

不知道$PlanningArray[$i][...]的值我無法肯定地說。但很可能你需要將你的回顯變量包含在引號中。這將解釋爲什麼一個數字可以工作,它將被視爲一個整數而不是一個字符串。試試這個:

for($i=0;$i<count($PlanningArray);$i++){ 

    $TickCrossDiv = 'tickCrossDiv'.$i; 

    echo "<button onclick=\"SetActDone(
     ".$PlanningArray[$i]['PlanID'].", 
     ".$PlanningArray[$i]['ActID'].", 
     '".$TickCrossDiv."')\" > 
     Mark as done</button>" 

}

我猜$PlanningArray[$i]['PlanID']$PlanningArray[$i]['ActID']也整數所以他們並不需要用引號引用做。

我也固定在這條線一個錯字:

$PlanningArray[$i]'PlanID'] 

如果你的代碼工作,這錯字可能不是你的真實腳本。

+0

非常感謝!它現在工作,我把$ TickCrossDiv放在引號中,是的$ PlanningArray [$ i] ['PlanID']和$ PlanningArray [$ i] ['ActID']是整數 –