如何进行多个条件AJAX请求

时间:2014-04-30 11:14:23

标签: php jquery mysql ajax

我有一个包含3个表,一个HTML和一个PHP文件的数据库。

数据库: tbl_customers

+---------+-----------+
|  ID     | Name      | 
+---------+-----------+
| 1       |Customer_1 |
+---------+-----------+
|   ...   |   ...     |
+---------+-----------+

tbl_data

+---------+---------+------+
|  ID     | Data 1  | C_ID |
+---------+---------+------+
| 1       |1        | 1    |
+---------+---------+------+
|   ...   | ...     |...   |
+---------+---------+------+

依旧......

我的HTML输出

<table class="table table-striped" id="tbl_customers">
    <thead>
        <tr>
            <th>Customer-ID</th>
            <th>Customer Name</th>
            <th></th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>1</td>
            <td>Customer_1</td>
            <td><button class="btn btn-primary btn-xs" id="set" type=
            "button">Select</button></td>
        </tr>
        <tr>
            <td>2</td>
            <td>Customer_2</td>
            <td><button class="btn btn-primary btn-xs" id="set" type=
            "button">Select</button></td>
        </tr>
        <!-- ... -->
    </tbody>
</table>

使用以下AJAX制作:

$(function () 
{
  $.ajax({                                      
    url: 'db-api.php',              //the script to call to get data          
    data: "",                       //you can insert url argumnets here to pass to db-api.php
                                    //for example "id=5&parent=6"
    dataType: 'json',               //data format      
    success: function(data)         //on recieve of reply
    {

        var output_customers= $("#tbl_customers");

        for (var i=0; i<data.length; i++) {
            $("<tr><td>"+data[i][0]+"</td><td>"+data[i][1]+"<td><button type='button' class='btn btn-primary btn-xs' id='set''><span class='glyphicon glyphicon-download'></span> Select</button></td></tr>").appendTo(output_customers);
        }
    } 
  });
});

我的db-api.php

<?php 
    $host = "127.0.0.1";
    $user = "root";
    $pass = "";
    $db = "pd_dev_01";


    $tbl_data = "data";
    $tbl_customers = "customers";

    //--------------------------------------------------------------------------
    // 2) Connection to DB
    //--------------------------------------------------------------------------
    $con = mysql_connect($host,$user,$pass);
    $dbs = mysql_select_db($db, $con);

    //--------------------------------------------------------------------------
    // 3) SQL
    //--------------------------------------------------------------------------
    $result = mysql_query("SELECT * FROM $tbl_customers");     // Query
    $array = array();                                       // Array erzeugen
    while ($row = mysql_fetch_row($result)) {                       
        $array[] = array($row[0], $row[1]);                                 
    }

    //--------------------------------------------------------------------------
    // 4) Output as JSON 
    //--------------------------------------------------------------------------
    echo json_encode($array);
?>

在我的HTML中,我对我的PHP文件执行AJAX请求以获取所有客户名称(从tbl_customers中选择*)。 我想要的是,用户现在可以单击结果并我执行另一个请求以获取tbl_data中具有相同客户ID tbl_customers的所有记录。

我将如何实现这一目标?

2 个答案:

答案 0 :(得分:1)

有很多方法可以实现这一目标。一种方法是,您可以将客户ID放在您打印出的行的数据属性上,并使用它来执行查询。

HTML

<tr data-customer-id="4">...</tr>

的Javascript

$('table').on('click', 'tr[data-customer-id]', function () {

  var $tr = $(this),
      id = $tr.data('customer-id');

  $.get('/customer', { id: id }, function (customer) {
    $tr.after('<tr><td>' + customer.name + '</td></tr>')
  });

});

然后在您的PHP中,您可以使用已清理的$_GET['id']版本来执行查询。

答案 1 :(得分:0)

您可以在单个ajax请求中完成此操作。

使用数据1的连续获取单个查询中的所有记录。 查询是

选择C.name,C.id,GROUP_CONCAT(D.data1 SEPARATOR'#')AS ddata1 from tbl_customers C inner join tbl_data D ON C.id = D.C_id Group by D.id;