我正面临一个小问题,我自己无法解决。
我有这个php功能:
function intervalo_manha(){
$que="select id_intervalo,data_15
from intervalo_manha
order by id_intervalo";
$re=mysql_query($que);
$object.="<select>";
$object.="<option></option>";
while(list($id_intervalo, $data_15)=mysql_fetch_row($re))
{
$object.= "<option value=\"".$id_intervalo."\">".$data_15."</option>";
}
$object.="</select>";
return $object;
}
此函数返回包含来自数据库的信息的选择。
我也有这个js函数:
$(document).ready(function() {
var destTable = $("#dataTable");
$("#btnAdd").click(function() {
var newRow = $("<tr style='margin-left:-60px'><td><INPUT type='checkbox' name='chk'/></td><td><INPUT type='text' name='txt[]' id='txt'/></td><td></td></tr>");
$("#dataTable").append(newRow);
newRow.find('input').autocomplete("get_cols_name.php", {
width: 260,
matchContains: true,
selectFirst: false
});
});
});
这个会在我的表中添加一个新行,并且每个新输入都会“激活”自动完成。我想做的是,而不是这个:
var newRow = $("<tr style='margin-left:-60px'><td><INPUT type='checkbox' name='chk'/></td><td><INPUT type='text' name='txt[]' id='txt'/></td><td></td></tr>");
我想有这样的事情:
var newRow = $("<tr style='margin-left:-60px'><td><INPUT type='checkbox' name='chk'/></td><td><INPUT type='text' name='txt[]' id='txt'/></td><td><?php echo intervalo_manha(); ?></td></tr>");
直接调用php函数将不返回任何内容,我什么也做不了。有没有办法实现这个目标?
谢谢
答案 0 :(得分:1)
这不起作用,因为您在 $(document).ready 中执行代码。 这意味着php已经完成,并且在$(document).ready之后无法执行(因为php只是服务器端)。 你要么必须使用ajax,要么在调用$(document).ready之前必须进行php函数调用并将其放入变量中:
var php_function_result = "<?php echo intervalo_manha(); ?>";
$(document).ready(function() {
...
// use php_function_result here
...
}
答案 1 :(得分:1)
如果所有代码都在同一页面上,请尝试
echo "var newRow = $(\"<tr style='margin-left:-60px'><td><INPUT type='checkbox' name='chk'/></td><td><INPUT type='text' name='txt[]' id='txt'/></td><td>";
echo intervalo_manha();
echo "</td></tr>\");";
答案 2 :(得分:1)
您正在使用$()。autocomplete(); to get_coll_name.php。 $()自动完成();很可能是使用AJAX调用PHP的jQuery UI或jQuery插件。您需要使用AJAX来调用PHP。您不能指定方法intervalo_manha(),您必须指定一个页面。如果你正在使用像Zend这样的框架,那么这很容易,因为框架允许你在调用中指定方法。
答案 3 :(得分:1)
试试这段代码:(请添加html标签以完成页面sice我无法在此处添加)
<?php
function intervalo_manha(){ 返回'这是我的数据';
$que="select id_intervalo,data_15
from intervalo_manha
order by id_intervalo";
$re=mysql_query($que);
$object.="<select>";
$object.="<option></option>";
while(list($id_intervalo, $data_15)=mysql_fetch_row($re))
{
$object.= "<option value=\"".$id_intervalo."\">".$data_15."</option>";
}
$object.="</select>";
返回$ object; }
if($ _ GET ['get_data']){ echo intervalo_manha(); 出口; }
&GT;
<head>
<title>test</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
var destTable = $("#dataTable");
$("#btnAdd").click(function() {
var newRow = $("<tr style='margin-left:-60px'><td><INPUT type='checkbox' name='chk'/></td><td><INPUT type='text' name='txt[]' id='txt'/></td><td class='d_value'>...retrieving data...</td></tr>");
$("#dataTable").append(newRow);
//newRow.find('input').autocomplete("get_cols_name.php", {
// width: 260,
// matchContains: true,
// selectFirst: false
//});
$.get('index.php?get_data=1', {}, function(data) {
newRow.find('.d_value').html(data);
});
});
});
</script>
</head>
<body>
<input type="button" value="click me" id="btnAdd" />
<table id="dataTable">
</table>
</body>
答案 4 :(得分:1)
使用ajax函数可能会更好。给它起名字。调用php-script,从输出中获取数据。
$.ajax(/*...*/);
答案 5 :(得分:0)
我在朋友的帮助下解决了我的问题。
基本上我们做了什么。
我们使用“php echo”创建一个div:
<div id="intervalo-manha"><?php echo intervalo_manha(); ?></div>
然后我们用css隐藏它:
<style type="text/css">
#intervalo-manha {
display: none;
}
</style>
在此之后我们只是在jQuery函数中调用了div:
var newRow = $("<tr style='margin-left:-60px'>...<td>" + $("#intervalo-manha").html() + "</td></tr>");
我从没想过会这么容易。 :)
感谢所有给我提示和建议的人。
问候