Javascript 如何创建动态ajax功能?
我使用了许多Ajax请求,如:Javascript 如何创建动态ajax功能?,javascript,jquery,ajax,Javascript,Jquery,Ajax,我使用了许多Ajax请求,如: $.ajax({ url: 'file.php', type: 'POST', async: true, data: {'data' : data}, success: function( data){ //Do Something. } }); 所以我想知道是否有可能创建一个动态函数,并向该函数传递一些参数,如(文件、类型、数据、success
$.ajax({
url: 'file.php',
type: 'POST',
async: true,
data: {'data' : data},
success: function( data){
//Do Something.
}
});
所以我想知道是否有可能创建一个动态函数,并向该函数传递一些参数,如(文件、类型、数据、successFunction)
然后,每当我想要发出Ajax请求时,我就调用该函数并传递这些参数
比如:
function dynamicAjax(fileName , reqType , dataObj , succFunction){
$.ajax({
url: fileName,
type: reqType,
async: true,
data: dataObj,
success: function( data){
//Run The Passed Function (succFunction).
}
});
}
然后我执行该函数:
dynamicAjax
('file.php' , 'POST' , {'data1': data1, 'data2': data2} , function(){
//Do Something.
}
);
这可能吗?jQuery处理好了,你不是第一个想到这个主意的人 检查
$。获取和$。在jQuery中发布方法
$.post( "test.php", { param: "value" }, ( data )=>{/*function*/}, "json");
$.get( "test.php", ( data )=>{/*function*/}, "json");
你99%都在那里。只需像这样执行回调函数
function dynamicAjax(fileName , reqType , dataObj , succFunction){
$.ajax({
url: fileName,
type: reqType,
async: true,
data: dataObj,
success: succFunction // executes succFunction(data)
});
}
我创建了一个动态ajax函数。请检查一下
function ajax(url, method = 'POST', data, callback)
{
$.ajax({
url: url,
method: method,
data: data,
headers: {
"Accept": "application/json",
"Content-Type": "application/x-www-form-urlencoded;",
},
beforeSend: function ()
{
},
error: function (response)
{
switch (true) {
case typeof response.responseText !== 'undefined':
console.log(response.responseText);
break;
case response.statusText !== 'abort' && e.status === 0:
alert('Please check your internet connection');
break;
case response.statusText === 'abort':
break;
default:
console.error(response);
}
},
complete: function (response)
{
callback(response);
}
}
);
}
要调用此函数,请使用以下代码
ajax('url here', 'GET', {id: id}, function(response){
alert(response);
});
你试过了吗?你试过了吗?它应该很好用。话虽如此,您的dynamicAjax
功能是否与仅使用$.ajax
有什么不同?听起来他想删除应用程序中的一些可感知的锅炉板。键入更少,可感知的可读性增加。一个人可能希望有一个用于公共逻辑的包装器方法,原因有很多。$.get
和$.post
方法的存在不仅仅是包装通用逻辑。它们明确表达了程序员的意图。你们知道,他们并没有输入方法:“post”,实际上是想做一个get。通过使用该方法,他们完全知道自己想要什么。另外,如果您想让函数做一些额外的事情,您可以在以后更改函数,而不必修改每个ajax请求。错误。。。即使您坚持创建自己的函数-要执行作为参数传递的函数,您需要在函数体中调用它,所以parameter()@大卫。不,没有错。ajax调用的success
参数在内部处理程序中执行,因此如果传递函数引用,则将使用success方法参数调用该函数。在你否认之前先试试;)@大卫,succFunction
回调将在ajax()方法中调用。@DavidC。success:function(){}
和success:succFunction
都将属性中的success值分配给函数引用。它们在逻辑上是相同的操作。在这两种情况下,ajax都会在需要运行时执行存储在success属性中的函数值。它的模式与setTimeout(function(){otherMethod();},500)
的工作方式与setTimeout(otherMethod,500)