【问题标题】:Can't get the value from ajax response div无法从 ajax 响应 div 中获取值
【发布时间】:2012-08-22 03:24:56
【问题描述】:

当我的 ajax 响应成功时,我有以下代码:

success : function(response) {
               $('#texto').append(response);
          }

这是我附加的响应 html:

<body>
{% load custom_filters %}
{% for modulo in modulos %}
<div align="left" class="result" value="{{ modulo.nome }}">
    {{ modulo.nome }} {{ modulo.versao }}.{{ modulo.chave_revisao|soma_um|mascara_versao }}
</div>
{% endfor %}

出现了 div,但是当我要使用它们的值时,我得到一个空字符串。比较结果是错误的。

$('.result').each(function(){
                    for (i=0; i<=vetBuscar.length;i++){
                        if($(this).val() == vetBuscar[i]){
                            return true;
                        } else {
                            vetBuscar.pop(i)
                        }
                    }

有人知道我怎样才能得到这个值吗?

【问题讨论】:

  • 为什么你的回复包含&lt;body&gt;标签?
  • AJAX 调用完成后,您是否在 div 中添加 Django 模板标签/for 循环?在将模板发送给客户端之前渲染模板时会对其进行评估。如果您在成功的 AJAX 调用之后添加它们,它们将不会被评估,这意味着只有一个 div 具有 class="result" 并且它将具有 value="{{ modulo.name }}" 而不是那个变量将举行。
  • @goliney 这只是一个错字,谢谢
  • @Mikael 我不这么认为。我在这里做的是: - 我进行 ajax 调用; - 视图处理并返回这个小模板(它是一个单独的模板); - 然后,当请求成功时,我将 html 添加到我的主模板中。我的问题是我无法获得这个 div 的值。如果我请求数据的方式有问题,请警告我。

标签: jquery ajax django


【解决方案1】:

试试:

$(this).attr("value")

代替:

$(this).val()

通常 div 没有value 属性,而.val() 方法适用于具有该属性的(表单)元素。

或者您可能喜欢使用 html5 data- 属性并使用:

<div align="left" class="result" data-value="{{ modulo.nome }}">

然后:

$(this).attr("data-value")

【讨论】:

    【解决方案2】:

    我认为问题可能在于当您的页面加载时,您要查找的元素尚未加载,因此您的选择器尚未绑定到任何内容。这实际上是使用 javascript 加载 html 时的常见问题。

    查看 jQuery .on() 事件处理程序,我认为它可能正是您正在寻找的:

    http://api.jquery.com/on/

    【讨论】:

      猜你喜欢
      • 2020-02-17
      • 1970-01-01
      • 2014-10-29
      • 1970-01-01
      • 2021-02-07
      • 2016-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多