好吧,我找到了解決我的問題。這是一種解決方法,而不是我最初解決問題的方式。我的第一次嘗試是在「ace.define」函數中嵌入一個ajax調用,但它不會正確處理它,並且會丟失部分導致錯誤。然後我嘗試動態地導入關鍵字,但無法在python環境中工作。最後,我想只是把所有東西都包裝在ajax調用的成功中,現在它的工作原理是正確的。我猜測,當嵌入到ace函數中時,ajax事件和定義的其他部分之間的時序不同步。
所以簡而言之,就是將整個定義包裝在ajax成功回調中。
$.ajax({
url: "/readUserCreatedKeywords",
type: "POST",
success: function(response){
var keywordsString = "";
var tmpArr = response.split(",");
var tmpArrLen = tmpArr.length;
var s = 0;
var halfNum = 0;
while (s < tmpArrLen) { // Clean array and save keywords and args into respective arrays
halfNum = parseInt(s/2);
tmpArr[s] = tmpArr[s].replace("u'", "").replace("[", "").replace("'", "").replace("(u", "").replace(")", "").replace("]", "").replace("(", "").replace(" ", "");
if (s % 2 == 0){ //Store even values in keywords
keywordsString += tmpArr[s] + "|";
//console.log("tmpArr[" + s + "]" + tmpArr[s]);
}
s++;
}
ace.define("ace/mode/python_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) {
...............................................lots of code..........................................
exports.Mode = Mode;
});
}
});
如果某些東西在Apache服務器中有效,但不在python服務器中,則必須由您設置服務器的方式引起。試着多說一些,否則這個問題是不可能回答的。 – 2014-12-12 06:07:09
python服務器有一個基本的python頁面,它調用了名爲templates的子文件夾中的index.html頁面。因此,位於「模板」中的任何內容都是比正常情況更深的一個目錄,因此所有相對路徑都與它應該的位置不匹配。我不是Web.py的粉絲,但我必須將其用於此項目。我發現並在Apache中工作的示例代碼將調用嵌入在html頁面中,從而導致相對路徑問題。代碼位於http://jsbin.com/ojijeb/445/edit?html,output – 2014-12-16 23:27:16
你可以使用ace.config.set(「basePath」,「some/path」)來改變ace尋找文件的位置 – 2014-12-19 19:03:59