2012-04-11 65 views
1

我有一個php,回聲html。在其中一個回聲中,我有一個調用JavaScript函數的按鈕。在這個調用中,我傳遞了一個php變量。然而,當我看到一個元素的值是在JavaScript裏面的時候,我得到了未定義的值。傳遞一個php數組到javascript

任何想法?

的Javascript

function addrow(innerid, teams){ 


    alert(teams[1]);} 

這是我如何通過它,這是所有裏面的一個回聲

<input type = "button" id = '.$buttonid.' value = "Agregar" onclick = "addrow(\'' . $leaguesarray[$numofleagues] . '\','.$teamsarray.') 

,所以我打電話addrow(與同盟價值,我也通過陣列teamsarray從php

我已決定嘗試別的,但我沒有得到它的正常工作

有什麼建議嗎?

echo '<script language="javascript">'; 


for ($size = 0; $size < sizeof($teamsarray);$size++){ 

    echo "var teamsarray[".$size."] = ".$teamsarray[$size].";\n"; 


    } 

echo 'function addrow(innerid, size){ 


for (var i = 0;i< size; i++){ 

html = html + "<option value = " + teamsarray[i] + ">"+teamsarray[i]+"</option>"; 


    } 

html = html +"</select>"; 
}</script>'; 

基本上我想要做的就是通過php回顯javascript。我試圖用我從php獲得的值做一個下拉菜單。它將通過addrow函數動態添加。

+0

向我們展示生成的標記。 – 2012-04-11 20:07:42

+0

數組的默認字符串表示是''Array「',我不認爲你想要。 – 2012-04-11 20:14:07

+1

[傳遞php數組到javascript函數]可能的重複(http://stackoverflow.com/questions/4885737/pass-php-array-to-javascript-function) – 2012-04-11 20:14:47

回答

1

這聽起來像你可能會尋找json_encode,所以你可能會做這樣的事情:

if (empty($teamsarray)) $teamsarray = array(); 
echo '<input type = "button" id = '.$buttonid.' value = "Agregar" onclick = "addrow(\'' . $leaguesarray[$numofleagues] . '\','.json_encode($teamsarray).'); return false;" />'; 
+0

我用json_encode,但javascript仍然給我一個未定義的值 – user541597 2012-04-11 21:56:28

+0

嗯,未定義很奇怪,因爲我建議的代碼明確定義了一個值,如果它是未定義的。你能提供一個jsfiddle,所以我們可以看看嗎?如果是的話,我可以用心跳來修復它。 – 2012-04-12 00:37:40

0

在JavaScript中,數組是這樣的:[2,4,6]。 php implode命令可以在這裏幫助。

$buttonid = 42; 
    $leaguesarray[$numofleagues] = 66; 
    $teamsarray = array(2,4,6); 

    $teams = implode(',',$teamsarray); 

    $input = <<<EOT 
<input type="button" id="$buttonid" value="Agregar" onclick="addrow($leaguesarray[$numofleagues],[$teams])" /> 
EOT; 
    echo $input . "\n"; 

產量:

<input type="button" id="42" value="Agregar" onclick="addrow(66,[2,4,6])" /> 

我認爲這是你想要的。

編輯:

@Dustin格雷厄姆使用json_encode的建議是一個很好的一個。用以下內容代替implode:

$teams = json_encode($teamsarray); 

並從模板中刪除額外的括號。

+0

感謝您的回覆。不過,我使用了json_encode並使用addrow函數傳遞它。我的javascript看起來像addrow(東西,團隊)團隊是我的數組。但是我沒有定義。 – user541597 2012-04-11 22:02:55

+0

好吧,所以我嘗試了你的方法我有我的我的teamsarray包含'5a7''8'等我然後做$隊= implode(',',$ teamsarray);並作爲$團隊傳遞它,但是當我得到值時,數組內的元素拼出數組。 – user541597 2012-04-11 22:12:35

+0

按照之前的要求,發佈您生成的實際html。您發佈的代碼非常混亂,很難弄清楚到底發生了什麼。 – Cerad 2012-04-12 00:07:58