程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP基礎知識 >> ecshop transport.js/run() error:undefined

ecshop transport.js/run() error:undefined

編輯:PHP基礎知識
 

在使用ECshop的AJAX(即:transport.js)

IE有時候會出現:ReferenceError: process_request is not defined,FF則出現:transport.js/run() error:undefined,其實這完全和transport.js無關。那麼問題出在哪裡呢?

(1)首先找到445-447行發現了這兩句:

/* 定義兩個別名 */
var Ajax = Transport;
Ajax.call = Transport.run;

(2)然後再找到735發現了這句:

Ajax.onRunning = showLoader;

哈哈....其實問題就是出在這句的showLoader函數裡面。因為在該函數裡753行有這段語句

if ( ! obj && process_request),而出現上述問題就是說變量process_request沒有定義!!

(3)為什麼說該變量沒有定義呢?

原因很簡單,因為EC很多時候都是將這句話:

<script type="text/javascript">
var process_request = "{$lang.process_request}";

.....

</script>

放在最後面的....在中途有其他什麼處理、JS載入、JS運行而還沒運行到最下面的時候當然就出現在上述的錯誤!!!

process_request這個變量到底有什麼用呢?其實就是為了創建一個DIV層顯示“正在處理您的請求...”這個信息!!為什麼要這樣實現呢?因為這樣可以支持多語言。


解決辦法:

(1)在showLoader函數體裡面加入這句var process_request = '正在處理您的請求...';英文的話就改成英文了。。。

(2)將var process_request = "{$lang.process_request}";這句話放在<header>下面的<script>裡面

(3)重新定義Ajax.onRunning這一事件例如可以自己新建一個函數run,Ajax.onRunning = run

第二種方法: 對於這個問題,官方管理員的回復是”有時ajax抓取訂單信息不全,出現這樣的錯誤信息,但這個不會影響您的正常使用,請您放心。如果要關閉,可以在後台裡的商店設置 基本設置中去除。”,實際上,按照官方這個說法,問題還是照樣存在,解決的辦法是“眼不見,心不煩”,將這條彈出語句注釋掉: 找到js/transport.js,第227行: alert(this.filename + "/run() error:" + ex.description); 復制代碼 將之改為: /* alert(this.filename + "/run() error:" + ex.description); */
 

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved