首先,我使用jQuery的$ .ajax函數獲取HTML。爲什麼沒有字符串傳遞到函數 - jQuery
在成功函數中,我提醒它(這個工作正常,並按預期顯示一個HTML字符串);
然後我把它作爲變量傳遞給另一個函數processHTML。但它不工作,並說該變量爲空。我用警報證實了這一點。
var my = my || {};
jQuery(function ($) {
my.html = {
getHTML: function(url) {
$.ajax({
url: url,
dataType: "html",
success: function(myHTML) {
alert(myHTML); // shows string, as expected
my.html.processHTML(myHTML); //returns null
}
});
},
processHTML: function (myHTML) {
alert(myHTML);
// do stuff and return myHTML
}
} // end of my.html object
}); // end of jQuery wrapper function
爲什麼不是從成功回調傳遞到processHTML函數的字符串?如果我將成功回調中的myHTML替換爲實際字符串(<div>test</div>
),它將成功傳遞到函數中。
更新:下面是實際的代碼,如要求。點擊鏈接onclick="hey.mydoc.ajax2({source: 'http://www.mysite.com/mypage'})"
進行調用。這也在JSFiddle上,但當點擊鏈接時,我得到ReferenceError: Can't find variable: hey
,這不會發生在我的網站上。
var hey = hey || {};
jQuery(function ($) {
hey.mydoc = {
//////////////////////////////////////////////////////
//////////////////////////////////////////////////////
//////////////////////////////////////////////////////
getHTML: function (source) {
$.ajax({
url: source,
dataType: "html",
beforeSend: function(){
},
success: function(myHTML) {
alert('myHTML is '+myHTML);
hey.mydoc.processHTML(myHTML);
} // end of success function
});
}, // end of method
//////////////////////////////////////////////////////
//////////////////////////////////////////////////////
processHTML: function (myHTML) {
alert ('processHTML - ' + myHTML);
myHTML = $(myHTML);
myHTML.find('script').remove();
// and a bunch of other DOM manipulations...
var content = "<!DOCTYPE html><html>" + myHTML.html() + "</html>";
return content;
}, // end of method
//////////////////////////////////////////////////////
//////////////////////////////////////////////////////
ajax2: function (options){
$.ajax({
url: options.content,
dataType: "html",
success: function(myHTML) {
alert('myHTML is '+myHTML); // myHTML is string of html, as expected
var newHTML = hey.mydoc.processHTML(myHTML); // myHTML not getting passed in
alert(newHTML);
} // end of success function
});
} // end of method
} // end of hey.mydoc namespace
}); //end of jQuery wrapper
請張貼給您麻煩的實際代碼。這看起來像是一個削減我的例子。 – 2012-01-31 20:34:00
這是你的實際代碼? 'var getHTML:function(url)'將立即失敗,並帶有'Unexpected token:'錯誤。 – ShankarSangoli 2012-01-31 20:34:35
這是您確切的JavaScript代碼或您複製粘貼的部分嗎?語法看起來很奇怪,因爲它使用':'和'='來定義函數。你在控制檯中是否收到錯誤信息? – 2012-01-31 20:35:07