首页 > 解决方案 > html id值不变

问题描述

我正在尝试使用 ajax 更新已应用的候选选择状态,但我遇到了 select 标签名称属性的问题,该属性在我迭代时不会更改其 ID 值,它在每次迭代中都显示相同的 id

我的模板

<th>skills req</th>
      </tr>
      {% for val in applicants %}
    
      <tr>
        <td>({{val.user.id}}){{val.user.username | capfirst }}</td>
        <td>{{val.apply_date}}</td>
        <td>
          <select class="status_select" name="status" id="{{val.user.id}}"> <-- even though here it should be changing it
            <option value="onhold">Onhold</option>
            <option value="selected">Selected</option>
            <option value="rejected">Rejected</option>
          </select>
        </td>
        <td>
          <b>{{val.job_post.job_type}}</b>
        </td>
        <td>{{val.job_post.title}}</td>
        <td>candidate skills</td>
      </tr>
    
      {% endfor %}
    </table>

jQuery 片段

 $("body").on("change", ".status_select", function (e) {
    e.stopPropagation();
    console.log($(this).val());
    id = $(".status_select").attr("id");
    console.log(id);
    console.log("working");
    $.ajax({
      url: "/users/status_change/",
      type: "GET",
      contentType: "application/json",
      dataType: "json",
      data: {
        id: id,
        selected_val: $(this).val(),
      },
      success: function (data) {
        console.log(data);
      },
      error: function (error) {
        console.log(error);
        console.log("calling from error");
      },
    });
  });

我的意思是这样说(id值停留在4)

id-> 4
[20/Jul/2021 19:31:10] "GET /users/status_change/?id=4&selected_val=rejected HTTP/1.1" 200 19
selected
id-> 4
[20/Jul/2021 19:31:16] "GET /users/status_change/?id=4&selected_val=selected HTTP/1.1" 200 19
rejected
id-> 4
[20/Jul/2021 19:31:18] "GET /users/status_change/?id=4&selected_val=rejected HTTP/1.1" 200 19
onhold
id-> 4
[20/Jul/2021 19:31:19] "GET /users/status_change/?id=4&selected_val=onhold HTTP/1.1" 200 19
onhold
id-> 4
[20/Jul/20

我的观点

def status_change(request):
    if request.method=='GET':

        print(request.GET.get('selected_val'))
        print('id->',request.GET.get('id'))
        return JsonResponse(status=200,data={
            'message':'okay'
        })

标签: djangoajaxdjango-views

解决方案


id = $(".status_select").attr("id");用于获取 id,这将从第一个选择返回 id,而不是当前选择。
使用this关键字来获取 id,就像你用来获取值一样。

var id = $(this).attr("id");

推荐阅读