使用Javascript和PHP变量更新页面上的数据


Using Javascript and PHP variables to update data on page

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;

谢谢,乍得