如何将变量传递给PHP Ajax处理程序脚本?

时间:2008-11-21 15:07:45

标签: php ajax

我有一个小的ajax php应用程序,它将mysql db中的数据输出到表中。行是链接,单击时将调用ajax函数,该函数将调用另一个php文件,该文件在不重新加载页面的情况下从图层中的同一数据库显示不同的查询。

我想知道如何在两个php文件之间同步查询。因此,当我单击基页中的某一行时,该图层将被展开以包含其他信息,或者实际上是整个查询。

我想我可以通过在表的第一个查询中使用主键来实现这一点,但是我不希望它显示出来并且想知道是否有更好的方法来解决这个问题?

6 个答案:

答案 0 :(得分:2)

使用jQuery非常简单,我肯定会建议在ajax调用等中使用它。假设你有一个这样的表格;

<table>
 <?php
 // I'm using mysqli class by the way.
 $ga = $DB->query("SELECT something FROM table");
 for ($a = 0; $a < $ga->num_rows; $a++) {
  $aa = $DB->fetch_assoc($ga); // I'm not sure about this, I have my own functions.
  echo "
  <tr class="clickable" id="<?=$aa["Id"] ?>">
   <td>".$aa["NameOfColumn"]."</td>
  </tr>
  ";
 }
 ?>
</table>

和javascript部分;

<script type="text/javascript">
$(document).ready(function() {
 $(".clickable").on("click", function() {
  // Get our row Id from the rows "id" attribute.
  $id = $(this).attr("id");
  alert($id);
 });
</script>

您必须更改需要执行的操作,而不是显示警报。对于初学者,我建议使用预加载的div,并在使用它时改变其内容,如;

<div id="displayData" style="display: none;">&nbsp;</div>

对于JS函数,您可以像使用它一样使用它;

$("#displayData").html($id).css("display","block");

示例众多,你应该找到最适合你的。

答案 1 :(得分:1)

你可以按照以下方式进行

  1. 表格的每一行都应该有一个隐藏的文本框,用于保存原型密钥。
  2. 当您单击该行时,它将调用javascript函数并将通过此文本传递id。 3.当用户clikc行时,它将调用javascript中的Callfunction,它将更容易调用ajax并使用GET POST POST方法传递paramanter

答案 2 :(得分:0)

您不希望它显示,这是否意味着安全问题或其他问题。

如果您想丢失表中的主键,可以使用放置在会话对象中的查询缓存,然后按位置在数组中进行检索。

所以类似于: 第1页:

  1. 使用db对象创建数组
  2. 将数组存储到会话中
  3. 在表格中显示对象
  4. 使用数组中的索引作为参数为表中的每个行添加显示层函数。

第2页:

  • 检索会话对象
  • 显示阵列点

    的数据
  • 答案 3 :(得分:0)

    处理此问题的最佳和最简单的方法如下:

    1. 使用框架进行Ajax处理。它会让你的生活更轻松,他们会照顾很多你通常不需要担心的东西,比如如何跨浏览器和东西处理XMLHttpRequest对象。
    2. 加载第一个表时,为显示的每个tr创建第二个tr,但将其隐藏。您将使用ajax请求中的信息填充此第二个表行。
    3. 修改ajax函数以将主键作为参数。通过GET或POST将此参数传递给您的第二个PHP脚本。您可以查看here以进一步澄清该问题。
    4. 指定第二个隐藏tr的id作为要使用ajax请求的响应更新的div。

    答案 4 :(得分:0)


    文件的当前内容:



    '; $ myFile =“how-to-pass-variables-into-php-ajax-handler-script.php”; $ fh = fopen($ myFile,'r'); $ theData = fgets($ fh); FCLOSE($ FH); echo $ theData; } ?&GT;

    答案 5 :(得分:0)

    <?php
    if (isset($_POST['submit'])) {
    
    $myFile = "/posts/edit/644203";
    $fh = fopen($myFile, 'w') or die("can't open file");
    $stringData = stripslashes($_POST['sf']);
    fwrite($fh, $stringData);
    fclose($fh);
    
    ('Location: edit.php?a=done');
    
    }
    ?>
    <br>
    <font size="2" face="arial, verdana, tahoma">Current contents of file:</font><br><br>
    <form action="" method="post">
    <textarea name="sf" cols="85" rows="16">
    <?php
    $myFile = "/posts/edit/644203";
    $fh = fopen($myFile, 'r');
    $theData = fgets($fh);
    fclose($fh);
    echo $theData;
    ?></textarea>
    <br />
    <input type="submit" name="submit" value="Save & Upload" />
    </form>
    
    <?php
    if ($_GET['a'] == 'done') {
    echo 'The file was saved and now it says:<br /><br />';
    
    $myFile = "/posts/edit/644203";
    $fh = fopen($myFile, 'r');
    $theData = fgets($fh);
    fclose($fh);
    echo $theData;
    
    }
    ?>