AJAX $.extend 中的函数在 jQuery 中不起作用 3
AJAX function inside $.extend not working in jQuery 3
我需要扩展 jQuery(作为插件)。问题是,$.ajax
在 $.extend
范围内不工作,但在范围外它工作正常。我在我的项目中使用 jQuery 3.4.1
。
我的代码:
(function($) {
jQuery.extend({
mmw: function(options) {
var settings = $.extend({
mtarget: "#cnapp-mmw",
imgSize: "square",
imgRestricted: true,
imgtype: ["gif", "png", "jpg", "jpeg", "pdf"]
}, options);
$.ajax({
type: "GET",
url: "http://example.com/public/get-media",
dataType: "html",
success: function(data) {
alert(data);
},
error: function(e) {
alert(e); // Showing this as outout [object Object]
}
});
}
})
})
但这显示了正确的输出:
(function($) {
$.ajax({
type: "GET",
url: "http://example.com/public/get-media",
dataType: "html",
success: function(data) {
alert(data); // This is showing the proper output
},
error: function(e) {
alert(e);
}
});
jQuery.extend({
mmw: function(options) {
var settings = $.extend({
mtarget: "#cnapp-mmw",
imgSize: "square",
imgRestricted: true,
imgtype: ["gif", "png", "jpg", "jpeg", "pdf"]
}, options);
}
})
})
我的第一个代码有什么问题? jQuery 3 有什么不同吗?
请注意,我需要在没有选择器的情况下调用此插件,例如
$(".trigger").on('click', function(){
$.mmw();
});
$.extend
是必须的功能吗?任何关于最佳实践的建议都将不胜感激。
更新
经过多次调试,我发现 AJAX 请求在任何块或事件中都不起作用。我在 Codeigniter 4 (beta 4)
.
中使用它
显示错误
$(".trigger").on('click', function(){
$.ajax({
type: "GET",
url: "http://example.com/public/get-media",
dataType: "html",
success: function(data){ alert("Ok"); },
error: function(e){ alert(JSON.stringify(e)); } // Showing error message {"readyState":0,"status":0,"statusText":"TypeError: Cannot read property 'open' of undefined"}
});
});
但是这显示了正确的数据
$.ajax({
type: "GET",
url: "<?=base_url('test/'.session_id())?>",
dataType: "html",
success: function(data){ alert(data); }, // Showing the Data
error: function(e){ alert(JSON.stringify(e)); }
});
$(".trigger").on('click', function(){
});
表示 Ajax 函数仅在作用域外工作。真是一头雾水。
当我使用 CI 4(测试版 4)时,上面的代码与 CI 4 用于调试工具的 Javascript 之间存在冲突。该错误仅在 "development" 环境中生成。在 "production" 环境下,一切正常。
我需要扩展 jQuery(作为插件)。问题是,$.ajax
在 $.extend
范围内不工作,但在范围外它工作正常。我在我的项目中使用 jQuery 3.4.1
。
我的代码:
(function($) {
jQuery.extend({
mmw: function(options) {
var settings = $.extend({
mtarget: "#cnapp-mmw",
imgSize: "square",
imgRestricted: true,
imgtype: ["gif", "png", "jpg", "jpeg", "pdf"]
}, options);
$.ajax({
type: "GET",
url: "http://example.com/public/get-media",
dataType: "html",
success: function(data) {
alert(data);
},
error: function(e) {
alert(e); // Showing this as outout [object Object]
}
});
}
})
})
但这显示了正确的输出:
(function($) {
$.ajax({
type: "GET",
url: "http://example.com/public/get-media",
dataType: "html",
success: function(data) {
alert(data); // This is showing the proper output
},
error: function(e) {
alert(e);
}
});
jQuery.extend({
mmw: function(options) {
var settings = $.extend({
mtarget: "#cnapp-mmw",
imgSize: "square",
imgRestricted: true,
imgtype: ["gif", "png", "jpg", "jpeg", "pdf"]
}, options);
}
})
})
我的第一个代码有什么问题? jQuery 3 有什么不同吗?
请注意,我需要在没有选择器的情况下调用此插件,例如
$(".trigger").on('click', function(){
$.mmw();
});
$.extend
是必须的功能吗?任何关于最佳实践的建议都将不胜感激。
更新
经过多次调试,我发现 AJAX 请求在任何块或事件中都不起作用。我在 Codeigniter 4 (beta 4)
.
显示错误
$(".trigger").on('click', function(){
$.ajax({
type: "GET",
url: "http://example.com/public/get-media",
dataType: "html",
success: function(data){ alert("Ok"); },
error: function(e){ alert(JSON.stringify(e)); } // Showing error message {"readyState":0,"status":0,"statusText":"TypeError: Cannot read property 'open' of undefined"}
});
});
但是这显示了正确的数据
$.ajax({
type: "GET",
url: "<?=base_url('test/'.session_id())?>",
dataType: "html",
success: function(data){ alert(data); }, // Showing the Data
error: function(e){ alert(JSON.stringify(e)); }
});
$(".trigger").on('click', function(){
});
表示 Ajax 函数仅在作用域外工作。真是一头雾水。
当我使用 CI 4(测试版 4)时,上面的代码与 CI 4 用于调试工具的 Javascript 之间存在冲突。该错误仅在 "development" 环境中生成。在 "production" 环境下,一切正常。