關鍵詞:Extjs,Ajax,成功的回調函數,Window,ShowmodelDialog,
問題描述:對話框在正常情況下可以彈出,但是在ajax的返回函數中無法彈出,js報錯:對象找不到,未聲明等;
(1).網友提供一解決辦法,未來得及嘗試,不確定可以與否
設置IE瀏覽器
1,工具--internet選項--安全---可信站點--添加當前站點爲可信站點
2,返回來選中可信站點--選擇自定義級別-在彈出的安全設置框中找到--允許有腳本初始化的窗口,不受大小和位置限制--選擇啓動
不過此種解決方案並不是最優方案,我們不可能讓每個用戶去設置自己的瀏覽器,很不合理,並不能把用戶當做開發人員來看待
(2).我自己嘗試了一種解決方案,我覺得還可以,ajax在執行的時候js代碼會增加一個線程,也就是說並非按照我們程序的順序去執行了,那麼我們想辦法讓它按順序執行不就解決了嗎?呵呵,,對吧,不過你可能想到讓程序sleep一會,但是不能這樣做,這樣只是自己欺騙自己罷了,我們可以還是使用ajax,不過我們不使用異步的ajax,呵呵,,使用同步ajax不就解決問題了嗎?基本代碼如下
var paramsStr = "projectId="+record.get("ProjectID")+"&jobId="+record.get("JobTaskId")+"&type="+
this.WinType+"&taskId="+record.get("JobID")+"&=jobExecHost"+record.get("JobExecHost");
varurlStr = jm_hj_WebContext + "/historyjob/dataGatherAction.action";
/**
*同步ajax
*/
varobj; var value;
if (window.ActiveXObject) {
obj = new ActiveXObject('Microsoft.XMLHTTP');
} else if (window.XMLHttpRequest) {
obj = new XMLHttpRequest();
}
obj.open('POST', urlStr, false);
obj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
obj.send(paramsStr);
var rest =Ext.util.JSON.decode(obj.responseText);
if(rest.result== "success"){
var vReturnValue =window.showModalDialog("/jm_dky_pm/dkyprojectmanagement/browseSystemFile.action",null,"dialogWidth=400px;dialogHeight=440px");
if(vReturnValue!= undefined ){
varlocaltext = vReturnValue;
getFileByWinscp("root","sugon123", ip, rest.info, localtext, true);
Ext.MessageBox.alert("提示:", "文件保存路徑爲:"+localtext);
}
}else{
Ext.MessageBox.alert("提示:", "操作失敗");
}
(3).其實可以彈出框的問題都可以通過,div+iframe來解決,不過此法感覺比較麻煩,就不在此詳述了,有興趣可以自己嘗試一下,
注:具體在ajax的回調函數中爲什麼不能使用使用window.showmodeldialog(),真正的原因我現在也未能明確,具傳有可能是在回調函數中也定義了類似:window.showmodeldialog(),window.open(),此類的函數,原因有待確認,望知道的相告!