首页 > 解决方案 > 如何在 AJAX 中使用最接近的 Jquery?

问题描述

在这里,我试图@Html.EditorFor(model => Model.CreditHourAndFullMarksPartialViewViewModels[i].GradePoint, new { htmlAttributes = new { @class = "form-control", @id = "txtGradePoint" } })根据成绩下拉列表的变化在相应的编辑器上设置成绩点值@Html.DropDownListFor(model => Model.CreditHourAndFullMarksPartialViewViewModels[i].FinalGrade, new SelectList(ViewBag.FinalGrade, "GradePointId", "Grading"), "-- Select Grade --", new { @class = "form-control", @id = "slcFinalGrade" })
但是尽管所有值都在 ajax 中可用,但没有显示 editorfor 中的值。

下面是我的 Jquery Ajax

<script>
$("select#slcFinalGrade").change(function () {
    debugger
    var getGradeVal = $("select#slcFinalGrade").val();
    var parameter = { gradePointId: getGradeVal }
    $.ajax({
        url: "/StudentResults/GetGradePoint",
        data: parameter,
        type: "GET",         
        success: function (data) {
            debugger
            $(this).closest('tr').find('input#txtGradePoint').val(data)
        }
    })
});
</script>

下面是我的html
        @for (int i = 0; i < Model.CreditHourAndFullMarksPartialViewViewModels.Count; i++)
    {
        <tr>
            @Html.HiddenFor(model => Model.CreditHourAndFullMarksPartialViewViewModels[i].ResultId)              
            <td>
                @Html.DropDownListFor(model => Model.CreditHourAndFullMarksPartialViewViewModels[i].Practical, new SelectList(ViewBag.Pratical, "GradePointId", "Grading"), "-- Select Grade --", new { @class = "form-control" })
                @Html.ValidationMessageFor(model => Model.StudentResult.Practical, "", new { @class = "text-danger" })
            </td>
            <td>
                @Html.DropDownListFor(model => Model.CreditHourAndFullMarksPartialViewViewModels[i].FinalGrade, new SelectList(ViewBag.FinalGrade, "GradePointId", "Grading"), "-- Select Grade --", new { @class = "form-control", @id = "slcFinalGrade" })
                @Html.ValidationMessageFor(model => Model.StudentResult.FinalGrade, "", new { @class = "text-danger" })
            </td>
            <td>
                @Html.EditorFor(model => Model.CreditHourAndFullMarksPartialViewViewModels[i].GradePoint, new { htmlAttributes = new { @class = "form-control", @id = "txtGradePoint" } })
                @Html.ValidationMessageFor(model => Model.StudentResult.GradePoint, "", new { @class = "text-danger" })
            </td>
        </tr>
    }

下面是我的控制器方法
 public decimal GetGradePoint(int gradePointId)
    {
        var getPoint = db.GradePoints.Where(x => x.GradePointId == gradePointId).FirstOrDefault().Points;
        return Convert.ToDecimal(getPoint);
    }

标签: jqueryajaxasp.net-mvc

解决方案


您需要做的就是this在回调中指出正确的。

$("select#slcFinalGrade").change(function () {
    var $select = $(this);
    var getGradeVal = $("select#slcFinalGrade").val();
    var parameter = { gradePointId: getGradeVal }
    $.ajax({
        url: "/StudentResults/GetGradePoint",
        data: parameter,
        type: "GET",         
        success: function (data) {
            // this in here refers to success callback function..
            $select.closest('tr').find('input#txtGradePoint').val(data)
        }
    })
});

推荐阅读