通过AJAX更新Php对象列表

通过AJAX更新Php对象列表,php,javascript,ajax,Php,Javascript,Ajax,我想做的是,我有一个要销售的iTen列表,当有人选择其中一个时,我希望它添加到对象列表中,并在同一页面上显示,旁边有一个删除按钮,这样用户可以插入/删除iTen,然后当它点击确认按钮时,它将完成销售 我一直在浏览ajax示例以及如何创建动态组件,但我不确定我将如何做到这一点。你知道我该怎么做吗 单击表格单元格时,下面是我的javascript函数: function selectRow(id) { $.ajax ({ type: "POST", url: "venda.php",

我想做的是,我有一个要销售的iTen列表,当有人选择其中一个时,我希望它添加到对象列表中,并在同一页面上显示,旁边有一个删除按钮,这样用户可以插入/删除iTen,然后当它点击确认按钮时,它将完成销售

我一直在浏览ajax示例以及如何创建动态组件,但我不确定我将如何做到这一点。你知道我该怎么做吗

单击表格单元格时,下面是我的javascript函数:

function selectRow(id) {
$.ajax
({
    type: "POST",
    url: "venda.php",
    data: {selected: id},
    cache: false,
    success: function(data)
    {
    }
}); 
}
ajax函数可以工作,但是如何让php将元素添加到html中,并添加引用该iten的delete按钮呢?最后,我必须获取所有元素并将其放入客户的“包”中。

JS:

function selectRow(id) {
    $.ajax({
        type: "POST",
        url: "venda.php",
        data: {selected: id},
        cache: false,
        success: function(data)
        {
            $('css_selector of div you want the stuff displayed in').append(data);
        }
    }); 
}
PHP:


嗯,有几种方法可以做到这一点。一个选项是将所选项目存储在$\u会话变量上,然后从venta.php将其打印为html标记。此外,您还可以在单击项目(元素)时添加事件以删除它们。这就像一个伪代码,当然,您需要验证数据,至少这可以解释如何使用php、jquery和javascript在没有插件的情况下处理删除/添加项的流程

shop.php(其中存在要选择的项目表):

venta.php

$action = $_GET['action'];

switch ($action)
{
    case "add": addItem();
    case: "delete": deleteItem();
}

function addItem(){
    $selected_id = $_POST['selected'];

    if(!array_key_exists('items', $_SESSION))
    {
        $_SESSION['items'] = array();
    }
    $_SESSION['items'][$selected_id] = array("id" => $item['id'], "name" => $item['name']);


    //print the selected items in html markup
    echo  "<ul>";
    foreach ($_SESSION['items'] as $id => $selection)
    {
        echo '<li> <a href="#" class="remove-item" name="' .$selection["name"] . '">' .$selection["name"] . '</a> </li>';
    }
    echo  "</ul>";
}

function deleteItem(){
    $selected_id = $_POST['selected'];
    unset($_SESSION['items'][$selected_id]); 

    //print the selected items in html markup
    echo  "<ul>";
    foreach ($_SESSION['items'] as $id => $selection)
    {
        echo '<li> <a href="#" class="remove-item" name="' .$selection["name"] . '">' .$selection["name"] . '</a> </li>';
    }
    echo  "</ul>";
}
$action=$\u GET['action'];
开关($动作)
{
案例“添加”:addItem();
案例:“删除”:deleteItem();
}
函数addItem(){
$selected_id=$\u POST['selected'];
如果(!数组\键\存在('items',$\会话))
{
$\u会话['items']=array();
}
$\u会话['items'][$selected\u id]=array(“id”=>$item['id'],“name”=>$item['name']);
//以html标记打印所选项目
回声“
    ”; foreach($\会话['items']作为$id=>$selection) { 回音“
  • ”; } 回声“
”; } 函数deleteItem(){ $selected_id=$\u POST['selected']; 取消设置($_会话['items'][$selected_id]); //以html标记打印所选项目 回声“
    ”; foreach($\会话['items']作为$id=>$selection) { 回音“
  • ”; } 回声“
”; }
php无法编辑客户端html。您必须使用JavaScription来实现这一点,为什么不使用一些jQuery呢?()我不能使用任何外部API。但是,我怎样才能用javascript做到这一点,然后在php上持久化呢?我对它做了一些修改,它几乎可以工作了,但我无法重新加载de页面或加载另一个页面来执行这些操作。按下“确认”按钮后的代码如下:函数confirmar(){var jSon=[];var divMenu=document.getElementsByTagName(“字段集”);for(var i=0;ivar json={}2。如果要传递json变量,需要抛出
$.ajax({type:“POST”,url:“confirma.php”,data:jSon,cache:false
…所以trid that.im发送一个jSon列表,即使我更改了它。它什么也不做。它不会用值加载confirma.php。我应该调用success函数中的某个东西吗?是的,如果confirma.php对某些值进行了响应,它将被路由到
success函数的
数据
参数ode>。您需要将该数据设置为一些html元素,如div
<!-- here you add jquery and your own javascript to play with that -->

<table>
    <tr>
        <td><a name="item_id" href="#">Item one</a></td>
    </tr>
</table>
<div class="my-selected-items"></div>
<a hef="link-to-proceed-order">Proceed order</a>
// add the result of php response to the *selected items* div
function selectRow(id) {
$.ajax
({
    type: "POST",
    url: "venda.php?action=add",
    data: {selected: id},
    cache: false,
    success: function(data)
    {
        $('.my-selected-items').html(data);
        register_delete_action();
    }
}); 
}

function register_delete_action()
{
    $(".remove-item").click(function(){
        $.ajax
        ({
            type: "POST",
            url: "venda.php?action=delete",
            data: {selected: id},
            cache: false,
            success: function(data)
            {
                $('.my-selected-items').html(data);
                register_delete_action();
            }
        }); 
    });
}
$action = $_GET['action'];

switch ($action)
{
    case "add": addItem();
    case: "delete": deleteItem();
}

function addItem(){
    $selected_id = $_POST['selected'];

    if(!array_key_exists('items', $_SESSION))
    {
        $_SESSION['items'] = array();
    }
    $_SESSION['items'][$selected_id] = array("id" => $item['id'], "name" => $item['name']);


    //print the selected items in html markup
    echo  "<ul>";
    foreach ($_SESSION['items'] as $id => $selection)
    {
        echo '<li> <a href="#" class="remove-item" name="' .$selection["name"] . '">' .$selection["name"] . '</a> </li>';
    }
    echo  "</ul>";
}

function deleteItem(){
    $selected_id = $_POST['selected'];
    unset($_SESSION['items'][$selected_id]); 

    //print the selected items in html markup
    echo  "<ul>";
    foreach ($_SESSION['items'] as $id => $selection)
    {
        echo '<li> <a href="#" class="remove-item" name="' .$selection["name"] . '">' .$selection["name"] . '</a> </li>';
    }
    echo  "</ul>";
}