php - 如何发出多个条件AJAX请求

标签 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获取具有相同tbl_customers客户ID的所有记录。

我将如何完成?

最佳答案

有很多方法可以做到这一点。一种方法是,可以将客户ID放在打印出的行的数据属性上,然后使用该属性执行查询。

的HTML

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


Java脚本

$('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']版本来执行查询。

关于php - 如何发出多个条件AJAX请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23386610/

相关文章:

php - 浏览器添加了奇怪的行内高度

php - Laravel 模型中关系的单元测试

php - 在 Symfony 中使用 OR 逻辑验证多个约束

jquery - 创建模糊的背景效果

javascript - jQuery通过1次调用重新加载多个数据表

php - $classInstance->title 比 $classInstance->getTitle() 快 - 为什么大多数人使用较慢的方法?

javascript - 如何使用 JavaScript 更新兄弟复选框?

mysql - 如何从两个不同的,不相关的表中获取最新的行,并将它们合并到一个结果集中?

c# - 用户单击按钮后,将数据插入数据库

mysql - 错误 1215 (HY000) : Cannot add foreign key constraint in mysql