从PHP返回JSON数据

时间:2012-06-19 16:06:53

标签: php jquery json

修改/ operacoes.php

header('Content-Type: application/json');
include('../../lib/mysql.class.php');

$db = new MySQL();
if($db->Error()) $db->Kill();

//VARIÁVEIS DA FORM
$id = intval($_POST['id']);

$sql = "SELECT * FROM operacoes WHERE id=$id";
if(!$db->Query($sql)) $db->Kill();

$db->MoveFirst();
$row = $db->Row();
$data['nome'] = $row->nome;
$data['produto'] = $row->produto;
$data['componente'] = $row->componente;
$data['materiaprima'] = $row->materiaprima;

echo json_encode($data);

jQuery的:

$.post('edit/operacoes.php',{id:id},function(data){
    $('div.form-container h1.title').text("Editar Existente");
    $('input#idbd').empty().val(id);
    $('input#nome').empty().val(data.nome);
    $('input#produto').attr('checked', (data.produto==1)?true:false);
    $('input#componente').attr('checked', (data.componente==1)?true:false);
    $('input#materiaprima').attr('checked', (data.materiaprima==1)?true:false);
    $('div#addbuttons').css('display','none');
    $('div#editbuttons').css('display','block');
    showPopup();
});

HTML:

<tr>
    <td colspan="3" class="input listas">
        <select multiple="multiple" name="escolha_ferramentas" id="escolha_ferramentas" size="15" class="list">
            <option value="3">Ferramenta 3</option>
            <option value="4">Ferramenta 4</option>
            <option value="5">Ferramenta 5</option>
            <option value="6">Ferramenta 6</option>
        </select>
        <div class="list-controls">
            <input type="button" value=">" id="next-ferramentas"><br><br>
            <input type="button" value="<" id="prev-ferramentas">
        </div>
        <select multiple="multiple" name="ferramentas[]" id="ferramentas" size="15" class="list">
        </select>
        <div style="clear:both;"></div>
    </td>
</tr>

除了选择之外,这很有效。

逻辑是,BD中的ID(不同的)是需要在右侧选择并从左侧选择中删除的选项(附加到右侧选择并从左侧选择中删除)

我的问题是,如何使用json,我能实现这一目标吗?获取id到jquery,然后循环它们将选项从一个选项移动到另一个选择?

修改 我创建了另一个php文件,只是为了给我需要的ID。 PHP返回["2","3","4"]。我如何在jQuery.post function(data){loophere}

中循环遍历

2 个答案:

答案 0 :(得分:1)

我会从PHP传递一个字符串数组(json看起来像['string','string','string']然后使用一个循环来指示“放在另一边”的那些字符串。

我没有看到你从服务器那里返回的那些,所以也许传递的元素上的语言翻译会让我失望,但很明显你正在制作其中一个:

    A           B
[       ]   [       ]
[       ] > [       ]
[       ] < [       ]
[       ]   [       ]

只需将需要从A中删除的元素作为字符串数组传递给B,然后遍历数组元素。

答案 1 :(得分:0)

嗯,有几种方法可以达到你想要的效果。

在你的ajax调用中,我会从左边的select中传入选定的id,从右边的select中传入id的数组,并在php的返回中得到一个对象,左边有要填充的数据选择并在右边选择再次清空它们,这样你就不会感到困惑并且控制每个选择上的元素。