我对JavaScript不是很了解,但我正努力改善自己。我正在重构一个有两个几乎完全相同的AJAX调用的脚本。两者之间的唯一区别是成功函数内部正在做什么。
如果我想使用一个AJAX函数而不是2,那么我将如何进行注入'一个或另一个代码块成为单个成功函数?
这就是我现在所拥有的。
$(".one").click(function() {
$.ajax({
url : "upload.asp",
type : "POST",
data : $("#upload").serialize(),
dataType : 'json',
cache : false,
success : function(data) {
// do some stuff here
}
});
});
$(".two").click(function() {
$.ajax({
url : "upload.asp",
type : "POST",
data : $("#upload").serialize(),
dataType : 'json',
cache : false,
success : function(data) {
// do some different stuff here
}
});
});
答案 0 :(得分:4)
以下内容可能会有所帮助:
methodOne = function(data) {
// do some stuff
};
methodTwo = function(data) {
// do some different stuff
};
$(".one, .two").click(function() {
var callback = function(){};
if ($(this).hasClass('one')) {
callback = methodOne;
else if ($(this).hasClass('two')) {
callback = methodTwo;
}
$.ajax({
url : "upload.asp",
type : "POST",
data : $("#upload").serialize(),
dataType : 'json',
cache : false,
success : callback
});
});
答案 1 :(得分:0)
你可以做的是为Ajax调用创建一个新函数,并传入作为参数点击的元素,如下所示:
function MyCall(el) {
$.ajax({
url : "upload.asp",
type : "POST",
data : $("#upload").serialize(),
dataType : 'json',
cache : false,
success : function(data) {
if(el == "one"){
//Do something
}
if(el == "two"){
//Do something else
}
}
});
};
然后在你的点击功能中调用它:
$(".one").click(function() {
MyCall("one");
});
$(".two").click(function() {
MyCall("two");
});