我正在使用带有Firefox的greasemonkey来改变访问特定域时显示的内容。其中一个页面包含一个包含两个元素的下拉列表,让我们将它们称为element0和element1。每当它检测到从一个切换到另一个切换时,它会执行ajax查询,根据您选择的页面内容来改变页面内容。所以它看起来像这样:
$(".dropdown").change(function(){
if($(this).val()=='element0'){
$.ajax({
// fetch some html
});
}
else{
$.ajax({
// fetch some other html entirely
});
我对选择element0时显示的内容感到满意 - 它是我想要更改的element1的相关内容。所以我需要一种方法只在第二种情况下触发我自己的usercript函数。我也不知何故需要它只在ajax查询完成后执行。我该怎么做?
我有一些编程的基本经验,但对jquery,ajax,json等一无所知。一位朋友帮助我找到了该页面的上述ajax,以便我甚至可以发布一个有意义的问题。请记住我的经验水平,因为我真的很想用你们所能提供的任何知识/智慧向前推进,但只有在我理解的情况下才能这样做。
非常感谢!
编辑:以上是主机正在运行的javascript。我通过保存页面并手动查看来访问它。我在客户端编写用户脚本以改变我的浏览器显示的内容。所以我想编写自己的函数,以我描述的方式响应它们的js。
答案 0 :(得分:-1)
在ajax你有一个有用的方法, 成功与compleate
成功:如果ajax请求是工作真理,则执行
完成:完成ajax功能后工作,所以你可以使用这个方法
示例:
complete: function(){
// call another ajax, hide somthing, do any somthing
},
另一个例子:
var all_data = {'user':txtuser,'pass':txtpass};
$.ajax ({
url:"ajax.php",
type:"post",
data:all_data,
beforeSend:function(){
// do somting before send a data
},
statusCode:{
404:function(){
$("#ma").html("Page not found");
},
401:function(){
$("#ma").html(".....");
}
},
success:function (data) {
$("#ma").html(data);// if sucsess
},
complete:function(){ // when complete
$("#user").hide(2000);
$("#pass").hide(2000);
$(".q").hide(2000);
}
});