jQuery ajax字段返回'undefined'

时间:2016-07-04 11:57:34

标签: php jquery ajax codeigniter

由Codeİgniter创建的项目

页面和回复

表格代码

<?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和数据无法正常工作

3 个答案:

答案 0 :(得分:0)

如果查看文档的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();
        ...
});

答案 1 :(得分:0)

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();

答案 2 :(得分:0)

最快修改(并开始工作)是将.parent()更改为.parents('form')