jQuery ajax 字段是返回'undefined'



由代码识别创建的项目

页面和响应

表单代码

<?php
$form_option = array('id' => $project->baslik ,'class' => 'form-horizontal');
echo form_open('ProjectStudent/add_project_student', $form_option); ?>
                                        
<input id="project_id" type="text" name="project_id" value="<?php echo $project->id; ?>" disabled="disabled"/>
<div align="right" class="col-md-12">
<select id="lesson_id" name="lesson_id">
 <option value="secim1_id">Seçim 1</option>
 <option value="secim2_id">Seçim 2</option>
 <option value="secim3_id">Seçim 3</option>
</select>
<button id="DersSec" type="button" class="btn btn-sm green">Ekle</button>
</div>
</form>

和jQuery代码

$(document).ready(function() {
            $("button[type=button]").click(function(e){
                        var project_id = $(this).parent().find('input[name="project_id"]').val();
                        var lesson_id = $(this).parent().find('select[name="lesson_id"]').val();
                        var data = $(this).parent().serialize();
                        alert(data);
                        alert(project_id);
                        alert(lesson_id);
                    });
                  });

lesson_id返回一个真实的数据,但project_id和数据不工作

project_id字段不在按钮的父字段中,因此当您执行时

var project_id = $(this).parent().find('input[name="project_id"]').val();

您实际上说:转到<div align="right" class="col-md-12">(父级(,然后在其中查找名称为project_id的输入字段。

您只需要在div中移动字段,或者使用上级父级访问它,如下所示:

var project_id = $(this).parents().eq(1).find('input[name="project_id"]').val();

如果查看文档的html结构,您会发现按钮的父级是<div>,而不是<form>。这就是为什么project_iddata是空的;find()一无所获。

你可以使用类似的东西:

$("button[type=button]").click(function(e){
    var form = $(this).closest('form'),
        project_id = form.find('input[name="project_id"]').val(),
        lesson_id = form.find('select[name="lesson_id"]').val(),
        data = form.serialize();
        ...
});

最快的修改是将.parent()更改为.parents('form')

最新更新