我希望通过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
,即使我可以查看页面源并看到很多具有该类名的元素。
答案 0 :(得分:0)
我认为它不起作用,因为你试图解析json响应,在你的情况下不需要。
您在调用中已将ajax调用数据类型称为json
。因此返回的响应将是已解析的javascript对象。
答案 1 :(得分:0)
事实证明,在某些情况下,通常的语法可以看出,$(...)
可以意外地返回Null,其中用“jQuery”替换“$”以赋予执行相同的jQuery(...)
确实返回预期的值。这要么提供一个解决方法,要么找到一个起点来找到它发生的原因并修复它。
线程中提出的其他相关问题包括检查它不是保护模式(Internet Explorer)或其他浏览器问题(通过其他浏览器),在Developer面板或控制台中手动测试代码,以及使用功能@Mutant在评论中出色地描述
@Mutant - 感谢所有帮助,消除了问题,并建议如何追踪它!