2014-12-30 113 views
0

我有一些代碼,允許我使用JavaScript將行添加到結果表。我基本上在表中設置第一行,然後有一個添加行按鈕將複製該行。這工作很好接受,當我嘗試添加一個使用PHP拉下結果的下拉字段。當我單擊按鈕時,該行仍然添加,但php下拉部分不顯示。PHP雖然在JavaScript函數循環

function addOpenResult() { 
    var openResults = document.getElementById("openResults"); 
    var openResultsRow = openResults.insertRow(openResults.rows.length-1); 
    var col1html = "<td width='50'><input size='5' width='100' type='text' name='rsRD1' /></td>"; 
    var col2html = "<td width='50'><input size='5' width='100' type='text' name='rsRD2' /></td>"; 
    var col3html = "<td width='50'><input size='5' width='100' type='text' name='rsRD3' /></td>"; 
    var col4html = "<td width='50'><input size='5' width='100' type='text' name='rsRD4' /></td>"; 
    var col5html = "<td width='100'><input size='10' width='100' type='text' name='rsScore' /></td>"; 
    var col6html = "<td width='200'><select name='playerID'><option selected>---- Select Player ---</option>" . <?php while ($trpRow=mysql_fetch_array($trpResult)) {extract($trpRow); echo '<option value=$playerID>$lastName, $firstName</option>' ;}?> . "</select></td>"; 
    var col7html = "<td width='100'><input size='10' type='text' name='rsAmount' /></td>"; 
    var col8html = "<td width='100'><input size='10' type='text' name='rsOtherWinnings' /></td>"; 
    var col9html = "<td width='100'><input size='10' type='text' name='rsOtherValue' /><input type='hidden' name='catID' value='15'></td>"; 


    var col1 = openResultsRow.insertCell(0); col1.innerHTML=col1html; 
    var col2 = openResultsRow.insertCell(1); col2.innerHTML=col2html; 
    var col3 = openResultsRow.insertCell(2); col3.innerHTML=col3html; 
    var col4 = openResultsRow.insertCell(3); col4.innerHTML=col4html; 
    var col5 = openResultsRow.insertCell(4); col5.innerHTML=col5html; 
    var col6 = openResultsRow.insertCell(5); col6.innerHTML=col6html; 
    var col7 = openResultsRow.insertCell(6); col7.innerHTML=col7html; 
    var col8 = openResultsRow.insertCell(7); col8.innerHTML=col8html; 
    var col9 = openResultsRow.insertCell(8); col9.innerHTML=col9html; 
    var col10 = openResultsRow.insertCell(9); col10.innerHTML=col10html; 
} 
+1

查看源文件所呈現的頁面上,並看看那裏的JavaScript字符串開始和結束。你正在混合你的PHP和javascript之間的字符串連接 – Rhumborl

+0

php在服務器上工作,JavaScript在瀏覽器中工作,你明白這一點嗎? –

+0

這種嵌入到語義(= html)結構中的數據可以通過使用包含值和** Javascript **循環的單個json對象(php:'json_encode()')輕鬆完成。它也更清潔,保證帶寬,並可能因客戶端渲染速度更快。 – DanFromGermany

回答

0

你錯誤地將您的JavaScript字符串與PHP內容串聯起來。更改

var col6html = "<td width='200'><select name='playerID'><option selected>---- Select Player ---</option>" . <?php while ($trpRow=mysql_fetch_array($trpResult)) {extract($trpRow); echo '<option value=$playerID>$lastName, $firstName</option>' ;}?> . "</select></td>"; 

<?php 
$options = ""; 
while ($trpRow=mysql_fetch_array($trpResult)) { 
    extract($trpRow); 
    $options .= "<option value=\"$playerID\">$lastName, $firstName</option>" ; 
} 
?> 
var col6html = "<td width='200'><select name='playerID'>"+ 
        "<option selected>---- Select Player ---</option>" + 
        <?php echo json_encode($options) ?> + 
       "</select></td>"; 
+0

我試了上面。新行顯示,但下拉列表仍爲空 – CincoPistolero

+0

這工作,我有我的SQL查詢調用之前其他文件中的while循環。一旦我移動它,你的例子就工作了。感謝json_encode參考。我現在要花更多的時間來學習它。 – CincoPistolero

0

當您的頁面生成後,PHP代碼會運行一次服務器端,然後發送到瀏覽器進行解釋。如果您查看網頁的來源,則會看到生成的JavaScript中存在錯誤。從看這看起來你的生成的JavaScript字符串沒有被引用。

var col6html = "<td width='200'><select name='playerID'><option selected>---- Select Player ---</option>" <?php while ($trpRow=mysql_fetch_array($trpResult)) {extract($trpRow); echo " + '<option value=$playerID>$lastName, $firstName</option>'" ;}?> + "</select></td>"; 

我還沒有測試,但類似的東西應該這樣做。我在生成的代碼中移動了連接運算符並添加了引號。

+0

由於@dwkd指出'+'操作符應該用於JS – jcbwlkr

+1

中的連接。此外,您應該正確地轉義正在進入JavaScript字符串的內容。最簡單的方法是使用'json_encode' –

+0

@JuanMendes說實話 – jcbwlkr

0

您在Javascript字符串串聯操作中使用PHP字符串concat運算符.。 您應該使用JavaScript的毗連運算+

而且

echo '<option value=$playerID>$lastName, $firstName</option>' 也應該用雙引號,因爲你正在尋找其輸出爲JavaScript字符串被包裹

echo '"<option value=$playerID>$lastName, $firstName</option>"'