目标正确的表单输入值Ajax和PHP

时间:2013-01-17 01:51:10

标签: php jquery mysql ajax

我有一个这样的脚本:

  $(function() {
     $(".btn_bookmark").click(function() {

   var name = $("input.???").val(); 
   base_url = '<?php echo base_url() ?>';

    $.ajax({
            url: base_url+"bookmark/bookmark_item/"+name,
            success: function() {
                    // do something on success
            }
         });
    return false;
    });
});

我的表单在PHP循环中,如下所示:

foreach($page->result() as $row){
   echo '<form name="" method="post" action="">';
   echo '<input type="hidden" name="'$row->name'" id="'.$row->id.'" size="30" value="'.$row->val.'" />';
   echo '<input type="submit" name="submit" class="btn_bookmark" id="submit_btn" value="Bookmark" />';
   echo '</form>';
}

问题是每个表单隐藏的输入名称,id和值与MySQL数据库不同/动态。那么我该如何为输入选择正确的值?

3 个答案:

答案 0 :(得分:2)

$(".btn_bookmark").click(function() {
    var name = $(this).prev().val();
    base_url = '<?php echo base_url() ?>';

    $.ajax({
            url: base_url+"bookmark/bookmark_item/"+name,
            success: function() {
                    // do something on success
            }
         });
    return false;
    });
});

通过这种方式,您将获得前一个隐藏的元素。

答案 1 :(得分:2)

而不是抓住var name = $("input.???").val();

你可以像这样抓住隐藏的输入:

$(this).parent().find('input[type=hidden]').val();

这会触发触发事件的元素的父元素(在本例中为表单),然后抓取该父元素的隐藏输入子元素。

答案 2 :(得分:0)

实施与您的实施不同,但它应该有效。

试试这个:

foreach($page->result() as $row){
   echo '<form name="" method="post" action="">';
   echo '<input type="hidden" name="'$row->name'" id="bkmark'.$row->id.'" size="30" value="'.$row->val.'" />';
   echo '<input type="submit" name="submit" class="btn_bookmark" id="submit_btn" value="Bookmark" onClick="bookmarkThis(\'#bkmark' . $row->id . '\');" />';
   echo '</form>';
}

你的js将是:

$(function() {
     boomarkThis = function(someId) {
         var name = $(someId).val();
         base_url = '<?php echo base_url() ?>';

          $.ajax({
                url: base_url+"bookmark/bookmark_item/"+name,
                success: function() {
                        // do something on success
                }
             });
        return false;
        });
     }