在jQuery中嵌入PHP .append()

时间:2011-01-07 15:18:29

标签: php jquery

这可能吗?我知道下面的代码看起来乱七八糟但我想通过将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内置下拉列表...我怎么能实现这个?

$('#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>');

5 个答案:

答案 0 :(得分:9)

因为Jquery是客户端 - 你不能像你建议的那样附加PHP。

您必须编写一个由Jquery回调触发的PHP脚本,PHP脚本将收到一些参数,并返回实现您的解决方案所需的HTML。

这有帮助吗?

答案 1 :(得分:3)

第1步:添加行

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

第2步:编写以下javascript函数,从php代码中重新获取结果并发送到html元素。

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>';
}

就是这样。最好的运气。我在开发DeskTop应用程序时已经准备好了这个组合。

答案 2 :(得分:1)

您将在服务器上生成下拉列表,然后使用jQuery $ .ajax方法获取下拉列表。或者,您可以返回一个选项/值的JSON数组,并使用类似$ .each的内容构建您的下拉列表来迭代数组。

如果您正在考虑在javascript中使用PHP,然后将其发送回服务器以执行,那么请不要。那是最高阶的WTF。你不是那个意思吗? (您可能想要更改问题的标题 - 因为它看起来像是什么样的。)

编辑:对于所有人说客户端PHP是不可能的。看看这个!

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

答案 3 :(得分:1)

PHP仅限服务器端,因此您无法将其嵌入到发送到客户端浏览器并希望它运行的JS中。为了实现您的结果,您需要使用PHP在初始页面中呈现列表,或者使用AJAX调用从服务URI中提取列表。

答案 4 :(得分:0)

如果您在服务器上动态生成此代码,即您希望在将HTML标记发送到客户端之前将其添加到HTML标记中,您可以执行以下操作:

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

这假设您知道如何从数据库中提取数据并使用该数据创建变量。 PHP在HTML文档中查找<?php ?>标记并解析它们之间的任何内容。