【问题标题】:Post the id in ajax [duplicate]在ajax中发布ID [重复]
【发布时间】:2019-05-22 08:04:06
【问题描述】:

我正在使用 PHP 以在单击超链接时显示模式。我在 ajax 中发布 ID 时遇到问题,因为它不会从超链接中获取 id 以将其发布在 ajax 中,所以我不知道为什么。

我试过了,但是没用:

var id = $(this).attr('autoid');

$.ajax({
    type: 'POST',
    url: "sendtest.php",
    data: {autoid : id},

    success: function(resultData)
    {
        alert(resultData)
    }

代码如下:

<span style="font-size: 15px; color: #ccd5d9; float: left; margin-top: -1px"><a href="#contactModal" role="button" data-toggle="modal">Send a test</a> | <a name="autoid" id="autoid" href="/delete_id.php?id=<?php echo $autoid ?>"> Delete </a> | Copy to Draft | Settings</span>

<div id="contactModal" class="modal fade" style="margin-top: 12%;" tabindex="-1" role="dialog">
    <div class="modal-dialog">
        <!-- Modal content-->
        <div class="modal-content" style="height: 250px;">
            <div class="modal-header" style="margin-bottom: 10px;">
                <button type="button" class="close" data-dismiss="modal">&times;</button>
                <h3 class="modal-title">Send A Test Email</h3>
            </div>
            <div class="modal-body" style="height: 65%;">
               <form action="" method="post">
                    <label class="label-control" value="">Send test message to email address:</label>
                    <?php
                        $html = '<select name="emails" id="emails" value="" style="width: 400px; margin-top: 10px; margin-bottom: 18px; margin-left: 60px;">';
                        $values = array('unknown', $_SESSION["email"]);

                        foreach($values as $v)
                        {
                            $selected = '';
                            if($v == 'unknown')
                            {
                                $title = '';
                            }else{
                                $title = $v;
                            }

                            if($v == $_SESSION["from"])
                            {
                                $selected = "selected";
                            }
                            $html .= "<option $selected value='$v'>$title</option>";
                        }
                        $html .= "
                        </select><br>";
                        echo $html;
                    ?>

                    <button name="send_email" id="send_email" type="submit" class="btn btn-primary" style="margin-left: 36%;">Send Test</button>
                </form>
            </div>
        </div>
    </div>
</div>


<script type="text/javascript">

$('#send_email').click(function(){
    document.getElementById("send_email").innerHTML = "<span><i class=\'fa fa-spinner fa-spin\'></i> Sending...</span>";
    document.getElementById('send_email').disabled = true;
    var id = $(this).attr('autoid');
    alert( $(this).attr('autoid'));


    $.ajax({
        type: 'POST',
        url: "sendtest.php",
        data: {autoid : id},

        success: function(resultData)
        {
            alert(resultData)
            $('#contactModal').modal('hide');
            document.getElementById("send_email").innerHTML = "Send Test";
            document.getElementById('send_email').disabled = false;
        }
        });
    });
</script>

在 sendtest.php 中:

<?php
// Initialize the session
session_start();

// Check if the user is logged in, if not then redirect him to login page
if(!isset($_SESSION["loggedin"]) || $_SESSION["loggedin"] !== true){
    header("location: login.php");
    exit;

}
else if(isset($_POST))
{
    $param_username = $_SESSION['username'];
    $param_campaign = $_SESSION['campaign'];
    $id = $_POST['autocampaign'];
    echo "hello your id is...";
    echo $id;
} 
?>

如果过去发布的内容非常相似,我很抱歉,但这是我一直在经历的困难情况,所以我想获得一些帮助。

所以我想要做的是,当我单击一个按钮以在模式上显示并选择一个值时,我再次单击一个按钮以获取 ID autoid 以通过 ajax 发布它并显示警报身份证。

您能否举个例子,我可以使用什么正确方法从名为autoid 的 HTML 标记中获取 ID,以便我可以在 ajax 中发布它以在警报中显示 ID?

谢谢。

编辑:当我尝试这个时它不起作用:

<form action="" method="post">
    <span style="font-size: 15px; color: #ccd5d9; float: left; margin-top: -1px"><a name="autoid" id="autoid" href="#contactModal" role="button" data-toggle="modal">Send a test</a> | <a name="autoid" id="autoid" href="/delete_id.php?id=<?php echo $autoid ?>"> Delete </a> | Copy to Draft | Settings</span>
</form>

在 sendtest.php 中:

<?php
// Initialize the session
session_start();

// Check if the user is logged in, if not then redirect him to login page
if(!isset($_SESSION["loggedin"]) || $_SESSION["loggedin"] !== true){
    header("location: login.php");
    exit;

}
else if(isset($_POST))
{
    $param_username = $_SESSION['username'];
    $param_campaign = $_SESSION['campaign'];
    $id = $_POST['autoid'];
    echo "hello your id is...";
    echo $id;
}
?>

我得到的只是警报中的hello your id is...。

更新:这是完整代码:

<?php
// Initialize the session
session_start();

// Check if the user is logged in, if not then redirect him to login page
if(!isset($_SESSION["loggedin"]) || $_SESSION["loggedin"] !== true){
    header("location: login.php");
    exit;
}
else
{
    $link = mysqli_connect('localhost', 'mydbusername', 'mydbpassword', 'mydbname');
    $param_username = $_SESSION['username'];
    $autocampaign = $_SESSION["campaign"];
    $auto_sql = "SELECT id, subject, day_cycle, enabled, delaysend FROM autore WHERE campaign ='$autocampaign' AND username ='$param_username'";

        $results = mysqli_query($link, $auto_sql);

         if (mysqli_num_rows($results) > 0) 
         { 
            while ($row = mysqli_fetch_array($results))
            {
                $autoid = $row["id"];
                $autosubject = $row["subject"];
                $autodaycycle = $row["day_cycle"];
                $autoenabled = $row["enabled"];
                $autodelay = $row["delaysend"];
            }
         }
?>

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>





<style type="text/css">


.calendar-content {
    float: left;
    width: 100%;
    min-height: 112px;
    border: 1px solid #ccc;
    position: relative;
    margin-top: -1px;
}


</style>

<div class="calendar-content">
  <div style="margin-left: 40px;margin-top: 20px; height: 40px;">
    <span id="autosubject" style="font-size: 25px;color: #0c7ac0;float: left;">Subject: <?php echo $autosubject ?> </span><br>
    <div style="margin-left: 35px; margin-top: 15px; height: 40px;">
      <form action="" method="post">
        <span style="font-size: 15px; color: #ccd5d9; float: left; margin-top: -1px"><a name="autoid" id="autoid" href="#contactModal" role="button" data-toggle="modal">Send a test</a> | <a name="deleteid" id="deleteid" href="/delete_id.php?id=<?php echo $autoid; ?>"> Delete </a> | Copy to Draft | Settings</span>
      </form>
    </div>
  </div><br>

  <!-- email Modal -->
  <div id="contactModal" class="modal fade" style="margin-top: 12%;" tabindex="-1" role="dialog">
    <div class="modal-dialog">
      <!-- Modal content-->
      <div class="modal-content" style="height: 250px;">
        <div class="modal-header" style="margin-bottom: 10px;">
          <button type="button" class="close" data-dismiss="modal">&times;</button>
          <h3 class="modal-title">Send A Test Email</h3>
        </div>
        <div class="modal-body" style="height: 65%;">
          <form action="" method="post">
            <label class="label-control" value="">Send test message to email address:</label>
            <select name="emails" id="emails" value="" style="width: 400px; margin-top: 10px; margin-bottom: 18px; margin-left: 60px;">
              <option selected="selected" value='title'>Title</option>";
            </select><br>
            <button name="send_email" id="send_email" type="submit" class="btn btn-primary" style="margin-left: 36%;" data-auto-id="<?php echo $autoid; ?>">Send Test</button>
          </form>
        </div>
      </div>
    </div>
  </div>
<?php
}
?>

<script type="text/javascript">
  $(function() {
  $('#send_email').click(function(e) {
    $(this)
      .html("<span><i class='fa fa-spinner fa-spin'></i> Sending...</span>")
      .prop("disabled", true);
    var id = $(this).data('deleteid');

    $.ajax({
      type: 'POST',
      url: "sendtest.php",
      data: {
        deleteid: id
      },
      success: function(resultData) {
        alert(resultData)
        $('#contactModal').modal('hide');
        $("#send_email")
          .html("Send Test")
          .prop("disabled", false);
      }
    });
  });
});
</script>
</body>
</html>

【问题讨论】:

  • 如果您在 Post 数据中通过 autoid 发送 id,那么在 PHP 中您需要使用该索引调用它:$_POST['autoid']。你打电话给:$id = $_POST['autocampaign'];,这是行不通的。
  • @Twisty 谢谢,所以我需要在 ajax 或 sendtest.php 中使用 $_POST['autoid'] 吗?
  • 当您想要访问发布的数据时,您需要在sendtest.php 中使用$_POST['autoid']。
  • 另一个问题是您的发送电子邮件按钮没有名为 autoid 的属性。
  • 另外 2 个调试工具:var_dump() 并查看您的 HTML 源代码。是的,后者也是一个(调试)“工具”。顺便说一句,(主作为我的见证人)不能说我没有(试图)帮助。调试不是我们的工作,而是你的;所以请记住这一点,这是成为(学习)编码员的重要组成部分。一旦你弄清楚了这一点,你就会发现以后修复自己的代码是多么容易。我之所以回到这里只是因为@Twisty 在他们的回答下回复了我的评论,我希望能从罗伯特那里得到同样的礼貌。

标签: php jquery mysql ajax session


【解决方案1】:

在你的sendtest.php 中你会想要改变:

$id = $_POST['autocampaign'];

致以下:

$id = $_POST['autoid'];

希望对您有所帮助。

更新

var id = $(this).attr('autoid'); 将失败,因为$(this) 是对按钮对象而不是表单的引用。 &lt;button&gt; 也没有名为 autoid 的属性。因此,id 将是 null 或 undefined。

id 应该从哪里获得它的价值?

$(function() {
  $('#send_email').click(function(e) {
    $(this)
      .html("<span><i class='fa fa-spinner fa-spin'></i> Sending...</span>")
      .prop("disabled", true);
    var id = $(this).data('auto-id');

    $.ajax({
      type: 'POST',
      url: "sendtest.php",
      data: {
        autoid: id
      },
      success: function(resultData) {
        alert(resultData)
        $('#contactModal').modal('hide');
        $("#send_email")
          .html("Send Test")
          .prop("disabled", false);
      }
    });
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="calendar-content">
  <div style="margin-left: 40px;margin-top: 20px; height: 40px;">
    <span id="autosubject" style="font-size: 25px;color: #0c7ac0;float: left;">Subject: <?php echo $autosubject ?> </span><br>
    <div style="margin-left: 35px; margin-top: 15px; height: 40px;">
      <form action="" method="post">
        <span style="font-size: 15px; color: #ccd5d9; float: left; margin-top: -1px"><a name="autoid" id="autoid" href="#contactModal" role="button" data-toggle="modal">Send a test</a> | <a name="autoid" id="autoid" href="/autoresponder/delete_autoresponder.php?id=<?php echo $autoid; ?>"> Delete </a> | Copy to Draft | Settings</span>
      </form>
    </div>
  </div><br>

  <!-- email Modal -->
  <div id="contactModal" class="modal fade" style="margin-top: 12%;" tabindex="-1" role="dialog">
    <div class="modal-dialog">
      <!-- Modal content-->
      <div class="modal-content" style="height: 250px;">
        <div class="modal-header" style="margin-bottom: 10px;">
          <button type="button" class="close" data-dismiss="modal">&times;</button>
          <h3 class="modal-title">Send A Test Email</h3>
        </div>
        <div class="modal-body" style="height: 65%;">
          <form action="" method="post">
            <label class="label-control" value="">Send test message to email address:</label>
            <select name="emails" id="emails" value="" style="width: 400px; margin-top: 10px; margin-bottom: 18px; margin-left: 60px;">
              <option selected="selected" value='title'>Title</option>";
            </select><br>
            <button name="send_email" id="send_email" type="submit" class="btn btn-primary" style="margin-left: 36%;" data-auto-id="<?php echo $autoid; ?>">Send Test</button>
          </form>
        </div>
      </div>
    </div>
  </div>

以下代码已清理。首先,我添加了包含来自 PHP 的 autoid 的 data-auto-id 属性。然后可以读取它并将其传递到 AJAX。

为了保持一致性,也切换到所有 jQuery。

【讨论】:

猜你喜欢
  • 2019-03-16
  • 2012-05-30
  • 2016-09-13
  • 1970-01-01
  • 1970-01-01
  • 2018-12-03
  • 1970-01-01
  • 2015-08-05
  • 1970-01-01
相关资源
最近更新 更多