类似系统:循环形成唯一id,得到这些id'使用jQuery/Javascript单独发布

Like system: Looping forms unique id, getting these id's with jQuery/Javascript to post Individually

本文关键字:id 使用 jQuery 单独发 Javascript 循环 系统 唯一      更新时间:2024-03-11

我只是通过构建自己的基于IP的Like系统来扰乱简单的PHP和Java。

尝试寻找解决方案,但到目前为止没有成功。

HTML在php EOT中的while循环中生成表单,显然每个表单都有唯一的id。共有25张带有"点赞"按钮的表格。这些表单在引导模式中。因此,因为它处于模态中,我不希望它刷新页面并重置我的"显示更多"列表。我正在尝试让所有表单都能够使用javascript按项目提交Like by id。下面的代码。

有什么建议或不同的方法吗?

HTML-PHP While循环(Modals中的表单):

<p id="result{$itemID}"></p>
<form enctype="multipart/form-data" 
    action="{$postLike}"
    id="myform{$itemID}"
    name="{$itemID}"
    method="post">
    <input type="hidden" 
       name="itemids" 
       value="{$itemID}">
    <input type="hidden" 
       name="ips" 
       value="{$ips}">
    <button id="submit-btn{$itemID}" 
       class="btn btn-{$optionLikeColor}" {$optionLikeDisabled}>
           <span class="glyphicon glyphicon-thumbs-up glyphr" 
               aria-hidden="true">
           </span> {$optionILikeText} {$likes}
    </button>
</form>

PHP:

<?php
   require 'init.php'; 
if($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST['itemids'])){
if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}
$itemsid = mysqli_real_escape_string($link, $_POST['itemids']);
$itemsip = $_SERVER['REMOTE_ADDR'];

if ($result = mysqli_query($link, "SElECT * FROM likes WHERE itemID='$itemsid' AND ip='$itemsip'")) {
    $row_cnt = mysqli_num_rows($result);
    if($row_cnt > 0){
            echo 'You''ve have already liked this item.';
    } else {
        $sql = "INSERT INTO likes (itemID, ip) VALUES ('$itemsid', '$itemsip')";
        if(mysqli_query($link, $sql)){
            echo 'Thank you!';      
        } else {
            echo 'Something went wrong, try again later!';  
        }

    }   
}
} else {
     echo 'Something went wrong, try again later!';
}
     mysqli_close($link);   
?>

Javascript正在工作,但仅适用于第一种形式:因此,我猜我需要将form/id变量传递到:$('#myform')、$('#1insert')、$[#myform:input')和$('#result')

$('#myform').submit(function(){
     return false;
});
$('#insert').click(function(){
   $.post( 
     $('#myform').attr('action'),
     $('#myform :input').serializeArray(),
     function(result){
       $('#result').html(result);
     }
   );
 });

Javascript概念显然不起作用:p建议?

   $("[id^='myform']").submit(function(){
        var ID = $(this).attr('name');
        return false;
   });
    $(document).ready(function(){
        $(document).on('click','#submit-btn'+ID,function(){
           $.post( 
             $('#myform'+ID).attr('action'),
             $('#myform${ID} :input').serializeArray(),
             function(result){ $('#result'+ID).html(result); }
             );
         });
     });

为所有表单指定相同的类,或者通过某种方式唯一选择这些表单。对于所有这些元素,您不需要唯一的id。

然后:

$(".myFormClass").on("submit", function () {
  var $f = $(this); // the form that got submitted
  $.post( 
    $f.attr('action'),
    $f.find('input').serializeArray(),
    function(result){
      // not sure where you wanted the result.  
      // The point is that you should select it relative to the form $f that you already know.
      $f.find('span').html(result);
    }
  );
});

工作起来很有魅力!谢谢

   $('.myFormClass').submit(function(){
       return false;
   });
   $('.myFormClass').click(function() {
      var $f = $(this);
      $.post( 
         $f.attr('action'),
         $f.find('input').serializeArray(),
         function(result){
           $f.find('#submit-btn').remove(),
           $f.find('#result').html(result);
         }
       );
    });