【问题标题】:How to post data in ajax from bootstrap modal?如何从引导模式在 ajax 中发布数据?
【发布时间】:2016-12-17 21:52:27
【问题描述】:

我在引导模式中遇到问题。我想使用引导模型添加图像的标题。

对于模态部分,我已经这样做了,

<!-- Modal content Start-->
 <form method="POST">
   <!-- Modal -->
   <div class="modal fade" id="myModal<?php echo $i;?>" role="dialog">
     <input type="hidden" id="image_id" name="image_id" value="<?php echo $Array->image_id;?>" >
      <div class="modal-dialog">
       <!-- Modal content-->
        <div class="modal-content">
          <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal">&times;</button>
            <h4 class="modal-title">Image Caption</h4>
          </div>
          <div class="modal-body">
            <input type="text" id="caption" name="caption" placeholder="Caption" value="<?php echo $Array->image_caption;?>"/>
          </div>
          <div class="modal-footer">
            <button class="btn btn-success" id="btn_caption">submit</button>
            <a href="#" class="btn" data-dismiss="modal">Close</a>
          </div>
        </div>
    </div>
  </div>
</form>
<!-- Modal End Here  -->

对于 ajax 部分我已经这样做了,

$(document).ready(function(e) {
  $("button#btn_caption").click(function(){
    var postData = $(this).serialize();
     alert(postData);
     $.ajax({
       type: "POST",
       url: "process.php",
       data: postData,
        success: function(msg){
            //alert('successfully submitted')
        },
        error: function(){
          alert("failure");
        }
    });
  });
});

对于 process.php 文件,我放了这些行,

<?php 
include('require/admin_header.php');
if (isset($_POST['caption'])) {
    $caption=strip_tags($_POST['caption']);
    $image_id=strip_tags($_POST['image_id']);
    echo '<pre>';
    print_r($_POST);
    // Data base update code
    echo 'Update Done';
}?>

现在,问题是数据库没有更新该值。 &lt;?php echo $Array-&gt;image_caption;?&gt; 它以模式打印数据库中的值。但是当我这样做alert(postData); 时,它什么也没提醒。任何人都可以帮我解决我犯的错误吗?

提前感谢您的帮助。

【问题讨论】:

  • 当您发布表单标签的代码时,我看不到“Id”atreebute。只需添加 id 属性并尝试给出下面的答案它应该可以工作

标签: php jquery ajax twitter-bootstrap bootstrap-modal


【解决方案1】:

您可以在 ajax 代码中使用此代码:

var postData = new FormData($("#form_id")[0]);

并且在您的打开表单标签中,您必须添加 enctype="multipart/form-data" 才能上传图片。

<form method="POST" enctype="multipart/form-data" id="form_id">
   <input></input>
</form>

【讨论】:

    【解决方案2】:

    我是这样解决问题的,

    这是模态部分,

     <!-- Modal content Start-->
           <form id="contactForm1" action="process.php">
         <!-- Modal -->
      <div class="modal fade" id="myModal<?php echo $i;?>" role="dialog">
        <input type="hidden" id="image_id" name="image_id" value="<?php echo $Array->image_id;?>" >
        <div class="modal-dialog">
          <!-- Modal content-->
          <div class="modal-content">
            <div class="modal-header">
              <button type="button" class="close" data-dismiss="modal">&times;</button>
              <h4 class="modal-title">Image Caption</h4>
            </div>
            <div class="modal-body">
              <input type="text" id="caption" name="caption" placeholder="Caption" value="<?php echo $Array->image_caption;?>"/>
            </div>
            <div class="modal-footer">
              <button class="btn btn-success" id="btn_caption">submit</button>
                <a href="#" class="btn" data-dismiss="modal">Close</a>
            </div>
          </div>
        </div>
      </div>
      </form>
      <!-- Modal End Here  -->
    

    这是ajax部分,

    <script>
    // Attach a submit handler to the form
    $( "#contactForm1" ).submit(function( event ) {
    // Stop form from submitting normally
    event.preventDefault();
    // Get some values from elements on the page:
    var $form = $( this ),
     id = $form.find( "input[name='image_id']" ).val(),
     caption1 = $form.find( "input[name='caption']" ).val(),
     url = $form.attr( "action" );
    // Send the data using post
    var posting = $.post( url, { image_id: id, caption: caption1} );
    // Put the results in a div
     posting.done(function( data ) {});
    });
    </script>
    

    而PHP部分是这样的,

    <?php include('require/admin_header.php');
    if (isset($_REQUEST['caption'])) {
    $caption=$_REQUEST['caption'];
    $image_id=$_REQUEST['image_id'];
    // Update SQL
    echo 'Update Done';
    }?>
    

    感谢有兴趣解决问题的人。再次感谢。

    【讨论】:

      【解决方案3】:

      替换

      var postData = $(this).serialize();
      

      var postData = $("#form_id").serialize();
      
      <form method="POST" id="form_id">
      </form>
      

      【讨论】:

      • 我已经做过这件事了。在这个地方,如果我提醒postData,它会显示类似image_id=37&amp;caption= 的数据
      • 你有没有从这个 $("#caption").val() @Avishake 得到标题值
      • 我做到了。但是数据没有出来。
      • 它输出什么 image_caption; ?>。是 nil 还是某个值?
      • 我在询问这一行的输出 在浏览器中
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-07
      • 2020-09-23
      • 2013-11-09
      • 2015-05-09
      • 2018-04-27
      • 2015-12-22
      相关资源
      最近更新 更多