【问题标题】:can't add to database through Ajax无法通过 Ajax 添加到数据库
【发布时间】:2012-05-21 18:28:34
【问题描述】:

单击提交按钮时,应返回所选奖牌的 ID,并通过 Ajax 将其插入数据库中。但这似乎不起作用。有人知道发生了什么或我做错了什么吗? 这是表格:

<form action="" method="post">
<?php

            while($medal = $allMedals->fetch_assoc())
                {
                    echo "<img src='" . $medal['imagepath'] . "' />";
                    echo "<input type='radio' name='radio' class='selectmedal' value='" . $medal['medalid'] . "' />";
                }

?>
            <input type='submit' value='Nominate' id='submitknop' onclick='geklikt()'/>
</form>

这就是geklikt的功能:

function geklikt(){
        alert($("#selectmedal").val());
        var medalid = $(".selectmedal").val();
        var data = { selectmedal:medalid };

        $.ajax({
            type: "POST",
            url: "ajax/medal_save.php",
            data: data
        }).done(function( msg ) {
            $(".feedback").text(msg.message);
        });

        return false;

正在显示警报,但显示的每个奖牌都显示相同的 ID(ID 3)。这是来自 Medal_save.php 的代码:

<?php
    include('../classes/Nomination.class.php');

    if(!empty($_POST['selectmedal']))
    {
        $nomination = new Nomination();
        $nomination->Medal = $_POST['selectmedal'];
        try
        {
            $nominate->Save();
            $feedback ['message'] = "Nomination succes!";
            $feedback ['status'] = "success";
        }
        catch(Exception $e)
        {
            $feedback ['message'] = $e->getMessage();
            $feedback ['status'] = "error"; 
        }   
    }
    else
    {
        $feedback ['message'] = "Please select a medal";
        $feedback ['status'] = "error";     
    }
    header('Content-type: application/json');
    echo json_encode($feedback);
?>

提前致谢!

【问题讨论】:

  • alert() 正在显示?而medal_save.php的代码是什么?
  • 您遇到了什么错误?您是否尝试过使用 Firebug 或 Chrome 的开发者工具进行调试?
  • 您应该做更多的研究并修改您的问题。说不能通过 Ajax 与数据库交互是不恰当的,因为 javascript 代码从不直接与数据库交互。尝试在您的 php 脚本中进行一些故障排除,看看您是否从 javascript 中得到了您所期望的。如果是,您就知道问题出在您的 PHP 脚本中。分片架构的美妙之处在于您可以对各个部分进行故障排除。
  • 警报正在显示,但每个奖牌显示的值相同。我已编辑问题以向您展示代码

标签: php ajax database


【解决方案1】:

您似乎需要获得 selected 单选按钮

 $('input[name=radioinputname]:checked', '#yourformid').val();

也就是说,如果您实际上并没有说您想要属性 id (?) 如果是这样使用

 $('input[name=radioinputname]:checked', '#yourformid').attr("id");

所以

<form action="" method="post" id="myradioform">
   <?php

        while($medal = $allMedals->fetch_assoc())
            {
                echo "<img src='" . $medal['imagepath'] . "' />";
                echo "<input type='radio' name='radioinputname' 
                      class='selectmedal' value='" . $medal['medalid'] . "' />";
            }

      ?>
        <input type='submit' 
         value='Nominate' id='submitknop' onclick='geklikt()'/>
  </form>

<script type="text/javascript">
   function geklikt(){
    alert($("#selectmedal").val());

    /* here */
    var medalid = $('input[name=radioinputname]:checked', '#myradioform').val();

   /* or if you actually meant to you want the attribute id */
   /*
  var medalid =  $('input[name=radioinputname]:checked', '#myradioform').attr("id");
 */

    var data = { selectmedal:medalid };

    $.ajax({
        type: "POST",
        url: "ajax/medal_save.php",
        data: data
    }).done(function( msg ) {
        $(".feedback").text(msg.message);
    });

    return false;
  }
  </script>

【讨论】:

  • 这似乎不起作用。它仍然为每一枚奖牌提供 id 3
  • 您可以编辑答案以包含来自 php while 循环的输出 html 吗?
猜你喜欢
  • 2016-06-02
  • 2015-09-16
  • 2013-05-17
  • 1970-01-01
  • 2013-02-23
  • 1970-01-01
  • 1970-01-01
  • 2019-06-30
  • 1970-01-01
相关资源
最近更新 更多