通过Ajax(或其他)为PHP函数赋予参数

时间:2018-03-12 08:04:16

标签: php html ajax

我在HTML Bootstrap中有4个按钮,在PHP中有一个函数(带参数的函数)。我需要的是:

如果用户单击该按钮,它会在PHP中向函数发送特殊参数。我不知道是不是错了,但我认为这可以用Ajax ...

我的代码HTML:

<button class="btn btn-success btn-sm" id="btn1">b1</button>
<button class="btn btn-primary btn-sm" id="btn2">b2</button>
<button class="btn btn-warning btn-sm" id="btn3">b3</button>
<button class="btn btn-danger btn-sm" id="btn4">b4</button>

我的PHP功能:

function get_request_to_table($status) {
    include 'db.php';

    if($status == "ARGUMENT1") {
        $sql="SELECT * FROM myTable WHERE user='".$_SESSION['valid_user']."' ORDER BY id DESC";
        $result=mysqli_query($conn,$sql);
    }

    if($status == "ARGUMENT2") {
        $sql="SELECT * FROM myTable WHERE user='".$_SESSION['valid_user']."' ORDER BY id DESC";
        $result=mysqli_query($conn,$sql);   
    }

而且我真的不想用HTML格式制作它......

3 个答案:

答案 0 :(得分:2)

首先在每个按钮上设置数据属性。例如

<button data-myAttr="ARGUMENT1" class="btn btn-success btn-sm" id="btn1">b1</button>

接下来在脚本中通过Arg1 = $("#btn1").attr('data-myAttr');获取data-myAttr并将其传递给您的php函数。

$.ajax({
    type: "POST",
    url: "PHP_PATH",
    data: {status: Arg1 },
    success: function () {} });

并通过PHP函数中的$ _POST ['status']获取它。

答案 1 :(得分:0)

你的逻辑有点令人困惑。您知道php将在 JavaScript之前执行,对吗?您是否计划预先运行所有sql选择语句?

如果您仍在使用Ajax,也可以创建生成php个原始{1}}片段的html个网页,并使用Ajax来获取结果。

datagenerator.php

<?php
$query ="SELECT * FROM myTable WHERE user='".$_SESSION['valid_user']."' ORDER BY id DESC";

    $result = conn($query);
    if (($result)||(mysql_errno == 0))
    {
      echo "<table width='100%'><tr>";
      if (mysql_num_rows($result)>0)
      {
              //loop thru the field names to print the correct headers
              $i = 0;
              while ($i < mysql_num_fields($result))
              {
           echo "<th>". mysql_field_name($result, $i) . "</th>";
           $i++;
        }
        echo "</tr>";

        //display the data
        while ($rows = mysql_fetch_array($result,MYSQL_ASSOC))
        {
          echo "<tr>";
          foreach ($rows as $data)
          {
            echo "<td align='center'>". $data . "</td>";
          }
        }
      }else{
        echo "<tr><td colspan='" . ($i+1) . "'>No Results found!</td></tr>";
      }
      echo "</table>";
    }else{
      echo "Error in running query :". mysql_error();
    }
?>

Ajax Call

$.post( "datagenerator.php", { status: "ARGUMENT1" })
  .done(function( data ) {
    $('#yourContainer').html(data);
  });

答案 2 :(得分:0)

致电

    <button class="btn btn-success btn-sm" onclick="sendStatus('success')" id="btn1">b1</button>
    <button class="btn btn-primary btn-sm" onclick="sendStatus('primary')" id="btn2">b2</button>
    <button class="btn btn-warning btn-sm" onclick="sendStatus('warning')" id="btn3">b3</button>
    <button class="btn btn-danger btn-sm" onclick="sendStatus('danger')" id="btn4">b4</button>

使用JQuery,您可以使用ajax函数

function sendStatus(status) {
$.ajax({
  method: "POST",
  url: "yourphpfile.php",
  data: { status: status }
}).done(function( msg ) {
    alert("Data Saved:" + msg );
  });
}

现在你可以在你的php文件中使用$ _POST [&#34; status&#34;]。