我正在尝试连接两个字符串,但它没有做任何事情,并且控制台中没有错误。所以很可能我太盲目看不到问题...... 这里是我的代码来获取两个字符串:
$.get( "urlto/file.css", function(data) {
cssOne = data;
return cssOne;
}, "html");
$.get( "urlto/otherfile.css", function(data) {
cssTwo = data;
return cssTwo;
}, "html");
以下是连接方法:
function mergeCSS(){
cssText = cssOne+" "+cssTwo;
return cssText;
}
变量都是全局的,所以我不认为这会导致任何问题。 正如我所说,也许我只是盲目......任何人都知道为什么它不起作用? THX
答案 0 :(得分:1)
这是一个延迟的对象竞赛问题。使用$.when等待所有承诺得到解决。在你的情况下你不需要回调:
var p1 = $.get( "urlto/file.css", null, "html");
var p2 = $.get( "urlto/otherfile.css", null, "html");
$.when(p1,p2).done(function(r1,r2){
cssText = r1 + r2;
});
答案 1 :(得分:0)
Jquery不是同步的。所以你没有得到理想的结果。您可以使用 Promises 同步JavaScript。
您可以这样做:
$.get( "urlto/file.css", function(data) {
cssOne = data;
$.get( "urlto/otherfile.css", function(data) {
cssTwo = data;
var newCSS = mergeCSS();//call function here
}, "html");
}, "html");
function mergeCSS(){
cssText = cssOne+" "+cssTwo;
return cssText;
}
更新:如果您想在点击按钮上执行此操作,可以执行以下操作:
$("#buttonId").click(function(){
$.get( "urlto/file.css", function(data) {
cssOne = data;
$.get( "urlto/otherfile.css", function(data) {
cssTwo = data;
var newCSS = mergeCSS(cssOne,cssTwo);//call function here
alert(newCSS);
}, "html");
}, "html");
});
function mergeCSS(cssOne,cssTwo){
cssText = cssOne+" "+cssTwo;
return cssText;
}