jQuery - 标准代码似乎不起作用? [$ selector返回Null]

时间:2014-02-18 02:46:02

标签: jquery

我希望通过AJAX传递数据来执行正确HTML类的查找,然后在完成时对该类的元素执行jQuery操作。

这是我到目前为止所简化的:

<span class="data_type_1">some data here</span>
<span class="data_type_2">some data here</span>
<span class="data_type_1">some data here</span>
<a href="javascript:removedata(57);">click to remove all data with id=57</a>

function removedata(id_to_remove) {
    var url = "/my.php";     
                // Calling with 'id=57' returns class_to_remove ='data_type_1'
    jQuery.ajax(
        url,
        {
            type: 'post',
            dataType: 'json',
            data: {
                id: id_to_remove,
                },
            complete: remove_callback
        });
}    

function remove_callback(transport) {
    var response = jQuery.parseJSON(transport.responseText);
    var class_to_remove = response.class_to_remove;

    alert ('debug point 1:  class_to_remove = ' + class_to_remove);
    $("span." + class_to_remove ).html('DATA TEMPORARILY REMOVED');
    alert ('debug point 2:  removal done');
}

我已经测试了ajax调用的工作,回调正在发生,调试点#1的数据是正确的(class_to_remove ='data_type_1')......然后没有其他事情发生,我可以' t得到要执行的操作,但也没有错误消息。

代码似乎是基本的,所需操作的语法显示在几十个网页上;我错过了什么?

更新

函数$('。CLASS_NAME')出了问题 - 当我添加另一个调试语句时,alert($('.data_type_1'));响应为Null,即使我可以查看页面源并看到很多具有该类名的元素。

2 个答案:

答案 0 :(得分:0)

我认为它不起作用,因为你试图解析json响应,在你的情况下不需要。

您在调用中已将ajax调用数据类型称为json。因此返回的响应将是已解析的javascript对象。

答案 1 :(得分:0)

事实证明,在某些情况下,通常的语法可以看出,$(...)可以意外地返回Null,其中用“jQuery”替换“$”以赋予执行相同的jQuery(...)确实返回预期的值。这要么提供一个解决方法,要么找到一个起点来找到它发生的原因并修复它。

线程中提出的其他相关问题包括检查它不是保护模式(Internet Explorer)或其他浏览器问题(通过其他浏览器),在Developer面板或控制台中手动测试代码,以及使用功能@Mutant在评论中出色地描述

@Mutant - 感谢所有帮助,消除了问题,并建议如何追踪它!