2011-01-07 86 views
4

這可能嗎?我知道下面的代碼看起來是一堆亂七八糟的東西,但是我想通過嵌入PHP來使它更加混亂。在每次點擊時,我在表格上追加了一行,但是我需要通過從mysql數據庫中提取結果來將動態下拉列表包含到這些<td>之一中。它說這個:<td><p class="add_edit">Add/Edit</p><input type="text" class="project_ref_input" name="project_ref_input" /><p class="project_ref"></p></td> 而不是p標籤我將有一個PHP內置下拉...我怎麼能做到這一點?在jQuery中嵌入PHP .append()

$('#items').append('<tr class="tableRow"> 
<td><a class="removeItem" href="#"><img src="/admin/images/delete.png"></img></a></td> 
<td class="supp_short_code">' + supp_short_code_db + '</td> 
<td class="om_part_no">' + omPartNo + '</td> 
<td>' + supPartNo + '</td><td>' + cat + '</td> 
<td class="description">' + desc + '</td> 
<td>' + manuf + '</td> 
<td>' + list + '</td> 
<td>' + disc + '</td> 
<td><p class="add_edit">Add/Edit</p><input type="text" class="quantity_input" name="quantity_input" /></td> 
<td class="price_each_nett price">' + priceEach + '</td> 
<td class="cost_of_items"></td> 
<td><p class="add_edit">Add/Edit</p><input type="text" class="project_ref_input" name="project_ref_input" /><p class="project_ref"></p></td> 
<td class="cost_total_td"></td> 
</tr>'); 

回答

8

因爲jquery是客戶端 - 你不能追加你喜歡的PHP。

您必須編寫一個由Jquery回調觸發的PHP腳本,PHP腳本將接收一些參數,並返回實現解決方案所需的HTML。

這有幫助嗎?

1

您將在服務器上生成下拉列表,然後使用jQuery $ .ajax方法獲取下拉列表。或者,您可以返回一個JSON數組的選項/值,並使用類似$ .each的方式構建您的下拉列表來迭代數組。

如果您正在考慮在JavaScript中使用PHP,然後將其發送回服務器執行,那麼請勿使用。這是最高訂單的WTF。你不是那個意思嗎? (你可能想要改變你的問題的標題 - 因爲這是它的樣子)。

編輯:對於所有你們說的客戶端PHP是不可能的。看一下這個!

http://thedailywtf.com/Articles/Client-side_PHP.aspx

+0

但不可取嗎? – diagonalbatman 2011-01-07 15:33:03

+0

它在dailywtf上 - 你怎麼看;-) – calumbrodie 2011-01-07 16:04:09

1

PHP是唯一的服務器端,所以你不能把它嵌入到您發送到客戶端瀏覽器的JS和希望它運行。爲了實現您的結果,您需要使用PHP在初始頁面中呈現列表,或使用AJAX調用從服務URI拉取列表。

0

如果您在服務器上動態生成的代碼,例如,你希望把它發送到客戶端之前增加MySQL結果HTML標記,你會做這樣的事情:

<td><?php $VARIABLE_TO_ADD ?></td> 

這是假設您知道如何將數據從數據庫中提取出來並使用該數據創建變量。 PHP在HTML文檔中查找<?php ?>標籤並解析它們之間的任何內容。

3

步驟1:添加行

// Your code 
//just call another function to get db driven combo. 
get_education_combo(); 

步驟2:以下寫爲從PHP代碼retriving結果和發送到HTML元素javascript函數。

function get_education_combo() 
{ 
    var url ="print_education_list"; 
    //alert(url); 
    var contents = AjaxRequest(url); 
    //alert(contents); 
    //return contents; 
    //send the result to html 

    document.getElementById("elementID").innerHTML=contents; 
} 

function AjaxRequest(url) 
{ 
    //alert(url); 
    if(xmlhttp != null){ 
     if(xmlhttp.abort) 
      xmlhttp.abort(); 
     xmlhttp = null; 
    }; 
    if(window.XMLHttpRequest) // good browsers 
     xmlhttp=new XMLHttpRequest(); 
    else if(window.ActiveXObject) // IE 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 

    if(xmlhttp == null) 
     return null; 

    xmlhttp.open("GET",url,false); 

    xmlhttp.send(null); 
    // alert(xmlhttp.status); 

    if(xmlhttp.status >= 200 && xmlhttp.status < 300)// 2xx is good enough 
     return xmlhttp.responseText; 
    else 
     return null; 
} 

第3步:PHP代碼

print_education_list() 
{ 
    $education="your query"; 
    echo '<select name="edu_name" id="edu_name" style="width:70px;">'; 
    foreach($education as $edu) 
    { 
     echo '<option>'; 
     echo $edu->sEducationName; 
     echo '</option>'; 
    } 
    echo '</select>'; 
} 

就是這樣。最好的運氣。我在使用php開發DeskTop應用程序時已經準備好了這個組合。