我目前已经创建了一段 Javascript 代码来检查 http 响应,如果它是成功的 200 代码,交通灯显示绿色,如果不是 200 代码,交通灯闪烁红色。
我目前的问题是我希望能够像这样将两个参数传递给初始化函数
requestResponses.init('/status', "ATTR");
第一个属性是我要测试的 URL,第二个属性是我创建的 HTML5数据请求属性的值。
我这样做的原因是我希望在同一页面上有多个交通信号灯同时针对不同的 URL,而不会相互影响。
因此,例如,我创建了一个数据请求属性并将其值设为四,然后我希望能够像这样将其连接起来
requestResponses.init('/status', "Four");
并开始在代码中定位如下元素。这使得它更加模块化和可重用。
.cp_trafficLight[data-request="Four"]
请找到我的附加代码和一个有效的 JSFiddle。
var requestResponses = {
greenLight: $('.cp_trafficLight_Light--greenDimmed'),
redLight: $('.cp_trafficLight_Light--redDimmed'),
greenBright: 'cp_trafficLight_Light--greenBright',
redBright: 'cp_trafficLight_Light--redBright',
settings: {
flashError: 400,
requestTime: 10000
},
init: function (url, targAttr) {
requestResponses.url = url;
requestResponses.getResponse(requestResponses.url, targAttr);
setInterval(function () {
if (requestResponses.errorCode === true) {
requestResponses.redLight.toggleClass(requestResponses.redBright);
}
}, requestResponses.settings.flashError);
},
successResponse: function (targAttr) {
requestResponses.errorCode = false;
requestResponses.redLight.removeClass(requestResponses.redBright);
requestResponses.greenLight.addClass(requestResponses.greenBright);
console.log(targAttr);
},
errorResponse: function (targAttr) {
requestResponses.greenLight.removeClass(requestResponses.greenBright);
},
getResponse: function (serverURL, targAttr) {
$.ajax(serverURL, {
success: function () {
requestResponses.errorCode = false;
requestResponses.successResponse(targAttr);
},
error: function () {
requestResponses.errorCode = true;
requestResponses.errorResponse(targAttr);
},
complete: function () {
setTimeout(function () {
requestResponses.getResponse(requestResponses.url);
}, requestResponses.settings.requestTime);
}
});
},
errorCode: false
}
requestResponses.init('/status', "TEST");
https://jsfiddle.net/8700h582/
感谢任何帮助!