all,
我不能把你能帮上忙的事情做好。我有一个页面,显示链接到数据库条目的文档,用户可以删除文档,也可以添加新文档。删除文档后,显示文档的表会自动更新,行也会被删除,php脚本会被调用,数据库条目也会被移除。这很好用。
我需要帮助的是,一旦用户添加了新文档,就动态地在表中填充新行。我有一个将文档记录添加到数据库的脚本,我可以使用PHP来获取新分配的DocID(数据库中的主键是自动递增的),但我如何将该DocID推回到javascript,以便它可以用DocID更新表。
如何将docid从php脚本传递到javascript中的cell2?
请参阅下面的一些代码示例。
HTML:
<div id="quoteleft">
List of linked docs here, with option to delete them.
<span id="removelink"></span>
<INPUT type="button" class="button-delrow" onClick="deleteLink('linkTable')" />
<table id="linkTable" width="95%" border="1" align="center">
<tr><th></th><th>ID</th><th>Link to Doc</th><th>Description</th></tr>
<?php $c = 0;
while(!$GetDocInfo->atEnd()) {
$c++; ?>
<tr><td><INPUT type="checkbox" id="chkbox1" name="chkbox[]"/></td>
<td><?php echo($GetDocInfo->getColumnVal("docid")); ?></td>
<td><a href="file:///C|/Users/Chad/Desktop/<?php echo($GetDocInfo->getColumnVal("filename")); ?>">C:/Users/Chad/Desktop/<?php echo($GetDocInfo->getColumnVal("filename")); ?></a></td>
<td><?php echo($GetDocInfo->getColumnVal("description")); ?></td>
</tr>
<?php $GetDocInfo->moveNext(); } $GetDocInfo->moveFirst(); //return RS to first record ?>
</table>
</div> <!-- end quote left -->
<div id="quoteright">
Select new files to link here. <br>
<input type="file" name="fileToUpload" id="fileToUpload"><br>
Description: <input type="text" name="desc" id="desc"><br>
<input type="button" value="Link" name="lnk" onClick="doclink(fileToUpload.value, <?php echo($GetPartInfo->getColumnVal("rfqid")); ?>, desc.value)"><br>
<span id="link"></span>
</div> <!-- end quote right -->
Javascript:
function doclink(doc, rfqid, desc) {
document.getElementById("link").innerHTML = '<img src="images/ajax-loader.gif" />';
text = "docname="+doc+"&rfqid="+rfqid+"&desc="+desc;
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("POST","./link.php",true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("link").innerHTML=xmlhttp.responseText;
//document.getElementById("link").innerHTML = doc;
}
}
xmlhttp.send(text);
var table = document.getElementById('linkTable');
var rowCount = table.rows.length;
var row = table.insertRow(rowCount);
// Add delete row button
var cell1 = row.insertCell(0);
var element1 = document.createElement("input");
element1.type = "checkbox";
element1.name="chkbox[]";
element1.id="checkbox"+(rowCount+1);
cell1.appendChild(element1);
//Add docid to doc
var cell2 = row.insertCell(1);
cell2.innerHTML = "ID";
//Add link to doc
var cell3 = row.insertCell(2);
cell3.innerHTML = "<a href='file:///C|/Users/Chad/Desktop/"+doc+"'>C:/Users/Chad/Desktop/"+doc+"></a>";
//Add description
var cell4 = row.insertCell(3);
cell4.innerHTML = desc;
} //end function link
PHP脚本:
$insert = "insert into doc (rfqid, filename, description) values ('$rfqid', '$file', '$desc')";
echo "<br>Insert: $insert <br>";
$err = mysqli_query($CSCRFQ, $insert);
if ($err === false ) {
echo "ERROR <br>";
}
$GetDocID = new WA_MySQLi_RS("GetDocID",$CSCRFQ,1);
$GetDocID->setQuery("SELECT max(docid) FROM doc WHERE rfqid=?");
$GetDocID->bindParam("i", "".$rfqid ."", "-1"); //colname
$GetDocID->execute();
//global $docid;
$docid = $GetDocID->getColumnVal("max(docid)");
echo "<br>FILE: $file <br>";
感谢您的回复,我通过将javascript修改为以下内容使其正常工作。
function doclink(doc, rfqid, desc) {
$.ajax({
type: "POST",
url: "link.php",
data: "docname="+doc+"&rfqid="+rfqid+"&desc="+desc,
dataType:'json', //or HTML, JSON, etc.
success: function(response){
alert(response);
var docid = response[0];
var file = response[1];
// do more stuff
}
});
}
和我的php脚本来回显/返回一个数组:
$answer = array();
$answer[0] = $docid;
$answer[1] = $file;
echo json_encode($answer);
exit;
谢谢,乍得