jquery和表单的混合

时间:2014-01-18 17:39:25

标签: javascript php jquery mysql

下午好。

我正在尝试向php提交表单(将其发送到mysql数据库),问题是我能够提交文本描述和文本内容,但是类别和子类别被选中通过脚本,我无法访问它们。 我正在传递我的代码。我是jquery和php的新手。我花了很多时间试图解决它而没有成功。提前谢谢。

     <?php require_once ('../../includes/select.php');?>
     <?php
     if (!$_POST['descricao'] == "") {
 $sql = "INSERT INTO conteudos(descricao,conteudo,categorias_id,subcategorias_id)                        VALUES('" . $_POST['descricao'] ."','" .$_POST['conteudo'] ."','" . $_POST['categoria']  ."','" . $_POST['subcategoria'] ."');";
 $sqlconf = mysql_query($sql);
 if (!empty($sqlconf)){
    $message = "O novo conteudo foi criado com sucesso.";
}
else {
    $message = "Erro na criação do conteudo, tente novamente.";
}
    }
    ?>

    <script type="text/javascript">
            $(document).ready(function(){

        $("select#subcategoria").attr("disabled","disabled");
        $("select#categoria").change(function(){
        $("select#subcategoria").attr("disabled","disabled");
        $("select#subcategoria").html("<option>aguarde...</option>");
        var id = $("select#categoria option:selected").attr('value');
        $.post("selec_subcategoria.php", {id:id}, function(data){
            $("select#subcategoria").removeAttr("disabled");
            $("select#subcategoria").html(data);
        });
    });
    $("#seleciona").submit(function(){
        var desc = $("#descricao").text();
        var cont = $("#conteudo").text();
        var cat = $("select#categoria option:selected").attr('value');
        var subcat = $("select#subcategoria option:selected").attr('value');
        event.preventDefault();
        $("#result").html('');
        //var values = $(this).serialize();
        if(cat>0 && subcat>0)
        {
            $.ajax({
                url: "index.php?pagina=gere_conteudos.php",
                type: 'POST',
                data: $("#seleciona").serialize(),
                success: function(){
                    alert("success");
                    $("#result").html('Submitted successfully');
                },
                error:function(){
                    alert("failure");
                    $("#result").html('There is error while submit');
                }
            });
            /*$.post('index.php?pagina=gere_conteudos.php', { descricao: desc});
            $.post('index.php?pagina=gere_conteudos.php', { conteudo: cont});
            $.post('index.php?pagina=gere_conteudos.php', { categoria: cat});
            $.post('index.php?pagina=gere_conteudos.php', { subcategoria: subcat});
            //$("#result").html('A sua escolha: '+result);*/
            $("#teste").html(desc);
            $("#teste2").html(cont);
        }
        else
        {   

            $("#result").html("Tem de escolher todas as opções disponiveis!");

        }
        //return false;
    });
});
       </script>

    <h2 class="title"><a href="#">SIB - Gestão de conteudos</a></h2>
    <p class="meta">Domingo, Dezembro 03, 2013 7:27 AM Posted by <a href="#">Someone</a></p>
    <div class="entry">

<div class="tabelas" >
    <p>Aqui deverá criar e gerir as publicações de conteudos para o seu sistema de informação de balcões. Só após a criação das categorias é que poderá criar as publicações de conteudos.</p>


    <?php if (!empty($message)) {
        echo "<p class=\"message\">" . $message . "</p>";
    }
    ?>
    <form id="seleciona">

        <table>
            <tr>
                <td>Descrição para a publicação a criar:</td>
                <td>
                    <input type="text" id="descricao" name="descricao" maxlength="30" value="<?php echo htmlentities($descricao); ?>" /></td>
            </tr>
            <tr>
                <td>Texto da publicação:</td>
                <td>
                  <textarea id="conteudo" name="conteudo" rows="15" cols="55" ="<?php echo htmlentities($conteudo); ?>"> </textarea></td>
            </tr>
          <tr>
            <tr>
                <td>Escolha de categoria:</td>
                <td>
                <select id="categoria">
                <?php print $opt->ShowCategoria(); ?>
                </select>
            </tr>
            <tr>
                <td>Escolha de subcategoria:</td>
                <td>
                <select id="subcategoria">
                    <option value="0">Escolha...</option>
                </select>
                </td>
                </tr>
            <tr>
                <td colspan="2">
                    <input type="submit" name="submit" value="Criar conteudo" />
                </td>
            </tr>
        </table>
    </form>
    <div id="teste"></div>
</div>

2 个答案:

答案 0 :(得分:0)

问题与动态值无关;您忘记添加name属性,因此在使用data: $("#seleciona").serialize(),序列化表单时不会包含这些属性。

变化:

<select id="categoria">

为:

<select id="categoria" name="categoria">

<select id="subcategoria">

为:

<select id="subcategoria" name="subcategoria">

答案 1 :(得分:0)

只有具有name属性的表单元素才会在提交表单时传递其值。您需要在输入元素中添加name属性。