我是HTML / Php / JavaScript世界的绝对初学者。我正在尝试制作这个页面:
1和3都可以(已经尝试使用仅插入形式) 我的代码看起来像这样(简化,没有dbconn):
echo "<select name='listedoc' size=1>";
while ($ligne = pg_fetch_array($result, null, PGSQL_ASSOC))
{
echo '<option value="'.$ligne['id_doc'].'">'.$ligne['doc_titre']. '</option>';
}
echo "</select>";
输入字段(简化,实际上有4个字段):
<p><form name="saisiedoc" method="post" action="docupdins.php"></p>
<table border=0>
<tr><td>Texte</td>
<?php
echo '<td> <textarea name="content" cols="100" rows="30"></textarea> </td>';
?>
</tr><tr>
<td colspan=2>
<input type=submit value="Valider la saisie" name="maj"> </td>
</tr>
</table>
</form>'
然后是JQuery脚本:
<script>
$(document).ready(function(){
$("select#listedoc").change(function () {
var id = $("select#listedoc option:selected").attr('value');
$.post("docsel.php", {id:id},function(data) {
});
});
</script>
选择字段的php(docsel.php):
<?php
include('../scripts/pgconnect.php');
$iddoc = $_POST['id'];
$sql="SELECT * FROM document where id_doc = $iddoc";
$result = pg_query($db, $sql);
if (!$result) {
echo "ERREUR<br>\n";
exit;}
$row = pg_fetch_row($result);
$doctyp = $row[1];
$doctitre = $row[2];
$docauteur = $row[3];
$doccontent =$row[4];
pg_free_result($result);
pg_close($db);
}
?>
无论我做什么,我都无法回归价值观。我在输入中尝试了value="'.$doctitre'"
,
echo $doctitre
无济于事。我的代码逻辑是否正确?谢谢你的帮助
答案 0 :(得分:1)
$.post("docsel.php", {id:id},function(data) {
$('textarea[name="content"]').text(data.content);
});
为了在data.content中有一些东西,php脚本发送json数据:
$result = [];
$result['content'] = $doccontent;
echo json_encode($result);
也许你需要阅读$ .post和json_encode上的文档...祝你好运。
答案 1 :(得分:0)
这里有一些你需要改变的事情。
首先,最重要的是你的docsel.php脚本有一个巨大的安全漏洞。您永远不应该永远放置未经过处理的输入,例如直接从用户直接进入SQL查询,因为它允许SQL注入。从本质上讲,SQL注入允许恶意用户结束程序员查询并提交自己的查询。为了解决这个问题,你必须清理任何用户输入 - 所以在这种情况下,在将用户输入放入查询之前,通过函数pg_escape_literal()传递用户输入。
其次,你的docsel.php脚本必须为AJAX请求输出某种输出。您可以使用echo来完成此操作,我建议您将其编码为JSON。代码示例:
$return_vals = array("doctype" => $doctyp, "doctitle" => $doctitre, "docauthor" => $docauteur, "doccontent" => $doccontent);
echo json_encode(array("document" => $return_vals));
最后,在您的jQuery脚本中,您实际上并没有对从AJAX post请求返回的数据做任何事情。在回调函数中,您需要将返回的字段添加到选择下拉列表中。代码示例:
<script>
$(document).ready(function(){
$("select#listedoc").change(function () {
var id = $("select#listedoc option:selected").attr('value');
$.post("docsel.php", {id:id},function(data) {
//FILL THE DROPDOWN HERE
$(data).each(function(elem) {
$("#dropdown-id").append("<option value='" + elem.doctitle + "'>" + elem.doctitle + "</option>");
});
}, "json");
});
</script>
一个静音和迂腐点,但在提出内容请求时,你应该使用GET而不是POST。