javascript - 如何在 $.ajax 调用中使用变量调用成功函数
问题描述
在 Javascript 中,我将如何进行这样的工作:
function callAjax (url, successCallback, errorCallback)
{
var ajaxProps = {
url: url,
success: successCallback,
error: errorCallback
}
return $.ajax(ajaxProps);
}
无论我如何尝试,我都会不断收到错误或者它们是未定义的。我正试图慢慢地从一个上帝对象中解脱出来。因此,通常 ajax 调用将针对 parent.specificSuccess,因为它来自该对象。我也尝试过使用 godObject[successCallback] 和 global[namespace].godObject[successCallback]。我还尝试了所有这三种变体:
function callAjax (url, successCallback, errorCallback)
{
var ajaxProps = {
url: url,
success: function (response) {
successCallback(response);
},
error: function (response) {
errorCallback(response);
}
}
return $.ajax(ajaxProps);
}
它是从上帝对象内部调用的:
callAjax('https://url.com', specificSuccess, specificError);
我已经尝试了上面列出的所有三个选项,并且在它前面也使用了“父级”。
我知道我一定错过了一些东西,我以前从未遇到过被要求做这样的事情的实例。似乎我应该能够使用带有方法名称的变量在回调中调用方法......但谷歌在这方面让我失望了。
解决方案
我有一个例子。它非常适合我。您可以将此代码保存为 .js 文件并在您的网页中引用。您可以像这样调用 ajax 方法: backend.ajax.AjaxPOST() 传递参数。可选地,你可以有一个加载。
backend.ajax = {
AjaxPOST: function (url, data, dataType, callBackSucess, callBackError, loadig) {
$.ajax({
type: "POST",
url: url,
data: data,
dataType: dataType,
success: function (e) {
if (callBackSucess != null)
callBackSucess(e);
},
beforeSend: function (e) {
if (loadig == true)
startLoadingAjax();
},
complete: function (e) {
if (loadig == true)
endLoadingAjax();
}
});
},
AjaxGET: function (url, dataType, callBackSucess, callBackError, loadig) {
$.ajax({
type: "GET",
url: url,
dataType: dataType,
success: function (e) {
if (callBackSucess != null)
callBackSucess(e);
},
error: function (e) {
if (callBackError != null)
callBackError(e);
},
beforeSend: function (e) {
if (loadig == true)
startLoadingAjax();
},
complete: function (e) {
if (loadig == true)
endLoadingAjax();
}
});
}};
var divLoading = "<div id=\"Loading\" style=\"display: none; position: fixed; z-index: 1000; top: 0;left: 0; height: 100%;width: 100%;background: rgba( 255, 255, 255, .8 ) url('http://i.stack.imgur.com/FhHRx.gif') 50% 50% no-repeat;display:block;\"></div>";
function startLoadingAjax() {
$("body").append(divLoading);}
function endLoadingAjax() {
$("#Loading").remove();}
推荐阅读
- ios - How to open local HTML files in iPhone browsers?
- python - 当程序的一部分在 Python 中等待时,如何做其他事情?
- javascript - 如何在反应中将功能和对象传输到功能组件
- probability - Is there a better way to program this,
- html - Display bug for email on Outlook (Microsoft 365) in a table cell
- javascript - 如何将属性函数添加到 Java 中另一个类的对象?
- android - Android App 中的异常:Lorg/jacoco/agent/rt/internal_8ff85ea/Offline 的解析失败;
- vue.js - 我可以在 Phaser Scene 函数(即创建或更新)中访问 Vue.js 选项 API 方法吗?
- python - sh 文件中 exec "$@" 的问题
- amazon-web-services - 通过 CDK 为 AWS SES(简单电子邮件服务)配置 AWS Cognito:服务相关角色权限 - 如何执行此操作?