就像系统一样:循环形成唯一的id,用jQuery / Javascript获取这些id以单独发布

时间:2016-04-07 23:34:55

标签: javascript php jquery mysql variables

我只是通过构建我自己的基于系统IP的方式来解决简单的PHP和Java问题。

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

HTML在php EOT中的while循环中生成表单,显然每个表单都有唯一的id。有25个表单,其中有一个Like按钮。这些表单在Bootstrap模式中。因为它在Modal中,我不希望它刷新页面并重置我的Show More列表。因为我试图让所有表单能够使用javascript按项目提交Like。代码如下。

有任何建议或不同方法吗?

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工作,但仅适用于第一种形式: 所以我猜我需要将表单/ id变量传递到:$(&#39; #myform&#39;),$(&#39;#insert&#39;),$(&#39; #myform:输入&#39;)和$(&#39;#results&#39;)

$('#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); }
             );
         });
     });

2 个答案:

答案 0 :(得分:0)

为所有表单提供相同的类,或者有一些方法可以唯一地选择这些表单。您不需要为所有这些元素提供唯一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);
    }
  );
});

答案 1 :(得分:0)

像魅力一样!谢谢!

struct S
{
    S(int m): m(m) {}
    constexpr int f() const { return m; }

    int m;
};

int main() { S s(1); }