2012-04-03 250 views
3

當試圖使用jQuery動態加載Javascript文件時,我總是收到「格式不正確」的錯誤消息。我在這裏發現了類似問題的人,但尚未提供解決方案。jQuery ajax請求在Firefox中導致'格式不正確'錯誤

我的主要腳本使用:

$.ajax({ 
    url: 'test.js', 
    dataType: 'script', 
    cache: true, 
    success: loadScriptReturn 
}); 

function loadScriptReturn() { } 

我的動態加載腳本(test.js)在其最簡單的形式:

alert('Hello World.'); 

因爲我特別加載此作爲腳本MIME類型它消除Firefox可能會被弄糊塗到什麼類型的文件被引入。有沒有辦法解決這個問題?或者,有沒有辦法在Firefox中關閉這個特定的錯誤? (注:這是一個錯誤,而不是一個警告,這是非常討厭,因爲我不希望看到後續的出錯信息 - 糟糕的Firefox,因爲這應該已經警告,不是錯誤)

請介意,這個例子工作,但它仍然產生一個錯誤。鑑於我需要動態加載多少個腳本,如果找不到解決此問題的方法,嘗試對「真實」錯誤消息進行排序將會很乏味。

預先感謝貢獻者!

+0

我懷疑這是火狐給你這個消息。更可能是Firebug。 – 2012-04-03 15:29:25

+0

是的,可能是Firebug - 另外,你不應該使用'ajax()'來獲取JS腳本 - 你應該使用'getScript()'http://api.jquery.com/jQuery.getScript/ - 是對方的簡寫,更清楚。 – Dutchie432 2012-04-03 15:31:56

+0

同時檢查你的編碼。如果您使用的是UTF-8,請確保您沒有使用[BOM](http://en.wikipedia.org/wiki/Byte_order_mark),因爲這會導致各種令人頭痛的問題。 – mekwall 2012-04-03 15:32:07

回答

2

我發現了幾個問題,可以幫助你:

普遍的共識是,你需要的MIME類型更改爲application/json

+2

此錯誤消息僅在動態加載腳本時在本地引發。當您開始關閉遠程服務器時,錯誤消息不會出現。據我所知,當加載本地文件(bug?)時,Firefox沒有看到MIME。 如果你是那裏的人誰收到這個相同的錯誤信息,嘗試上傳所有的文件到遠程服務器,看看它是否消失...我花了3-4個小時試圖診斷問題...希望這節省了別人一些時間。 – OrangeFrog 2012-04-03 16:54:02

1

一種更好的方式來加載動態腳本:

$('head').append('<script type="text/javascript" src="test.js"></script>'); 
+0

我試過你的代碼(順便說一下,謝謝),但我仍然收到相同的錯誤信息。有趣的是,我在嘗試你的代碼時找到了一個解決方案。 – OrangeFrog 2012-04-03 16:52:23

+1

只有在動態加載腳本時,纔會在本地引發此錯誤消息。當您開始關閉遠程服務器時,錯誤消息不會出現。據我所知,當加載本地文件(bug?)時,Firefox沒有看到MIME。 如果你是那裏的人誰收到這個相同的錯誤信息,嘗試上傳所有的文件到遠程服務器,看看它是否消失...我花了3-4個小時試圖診斷問題......希望這節省了別人一些時間。 – OrangeFrog 2012-04-03 16:55:10

+0

只是可以肯定,嘗試包裝你的js文件由 // <![CDATA [ - 你的JS代碼 - //]]> 我認爲這可能會解決錯誤! – skafandri 2012-04-03 17:04:00