我真的在与奇数代码挣扎。
我想在所有$.ajaxPrefilter
ajax请求中按jQuery
添加一些查询参数。
我在下面找到了代码,如果它正确加载同步顺序。
但是,跟随entry.js中的代码以不可预测的顺序加载jscode。有时prefilter.js被预加载,另一次,post_ajaxs.js被预加载。(我检查了服务器发布消息,有时缺少数据,我检查了使用chrome的时序加载devtools)。
require(['prefilter'])
$(function(){
if($("#page_id").length > 0) {
require([
"src/common/post_ajax.js"
]);
}
});
为什么会造成这种情况?我很困惑,因为我首先想到require关键字是同步加载。 我显示了webpack.config.js的部分片段可能是相关的。
entry: {
/webroot/js/entry.js: __dirname+"/src/entry.js"
},
resolve: {
alias: {
"prefilter": __dirname + "/src/common/prefilter.js",
}
},
output: {
path: __dirname + "/webroot/js/",
filename: "[name].js",
chunkFilename: "[hash].[id].js?" + (+new Date()),
publicPath: "/js/"
},
plugins: [
new webpack.optimize.DedupePlugin(),
new webpack.optimize.OccurrenceOrderPlugin(),
new webpack.optimize.AggressiveMergingPlugin(),
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery",
"window.jQuery": "jquery",
d3: "d3"
})
]
我想强制prefilter.js预加载并在其后加载post_ajax。请给我帮助。我会很感激。
修改 这是prefilter.js。
$.ajaxPrefilter(function (options, originalOptions, jqXHR) {
options.data = $.param($.extend(originalOptions.data, {'data[extra]':$("#some_id").val() }));
}
});