2013-10-24 64 views
17

我知道這個問題已被詢問很多次,但我無法找到與我的問題相似的地方。我只在Chrome中收到此錯誤,在其他所有瀏覽器中,一切正常。我在幾個地方用JSON返回數據,但由於我的代碼在其他瀏覽器中工作,我認爲它沒有任何問題。 Chrome不告訴我在哪裏是錯誤(在我的代碼),它讓我看到這些錯誤:未捕獲的語法錯誤:意外的代幣<在Chrome上

enter image description here

這是我如何使用JSON:

$.post("getData.php", {'id' : id}, function(data){ 
     var obj = jQuery.parseJSON(data); 
. 
. 
. 

... some mysqli query 
$data = $query->fetch_assoc(); 
echo json_encode($data); 

所以我沒有看到這裏有個問題,有人可以幫我解決這個問題。

+0

什麼是狀態碼,200 OK?如果沒有,你可能會得到錯誤響應的html,它不會解析並生成那種錯誤。可能與你的SQL查詢有關。 – McRui

+0

一切都是200好,在一些地方我找到了200個。正如我所說,它在Firefox中完美工作,我沒有看到一個原因,如果它在Firefox中工作,我會得到一些錯誤 – Alen

+0

您是否嘗試關閉AdBlock並測試它? – McRui

回答

6

錯誤Uncaught SyntaxError: Unexpected token <使用@Mario的答案,但這只是我的問題的一部分另一個問題是,JavaScript沒有從PHP文件中獲取任何數據。使用此代碼解決,在PHP文件中:header("Content-Type: text/javascript; charset=utf-8"); 在這個鏈接上找到了這個答案,在這裏我打開了另一個問題來解決這個問題:Can't receive json data from PHP in Chrome and Opera

+0

到目前爲止我有兩次這個問題。第一次解決方案是將'.php'文件中的所有'echo'替換爲具有不同條目的1個數組。第二次(剛剛),它更簡單:我必須刪除我的'.php'文件頂部的註釋(該文件是這樣開始的:'<! - comment ... - >')。所以這就是''來自的地方。 –

+4

它仍然不適合我。馬里奧的回答是什麼,我找不到它。 – es1

16

您可以檢查您的網絡(控制檯)並查看服務器的答案......「<」將是您回覆的第一個字母。類似的線Z「<‘未定義指數XY>’

+0

有沒有這樣的迴應,我查了網絡和控制檯 – Alen

+0

你能提供一個生動的例子嗎? – delueg

+1

對不起,但我不能。我注意到它給了我第一個中,如果我刪除<那麼它給了我同樣的錯誤,但是<它說!是意外的象徵。 – Alen

2

要覆蓋可能會在Chrome中遇到錯誤(可能在Safari),嘗試設置阿賈克斯參數爲dataType: "json",那麼你不應該叫parseJSON()obj,因爲你會得到反應來反序列化。

+1

我沒有看到這個錯誤了,但我沒有收到任何數據從服務器,雖然這個相同的代碼在Firefox中工作:http://pastebin.com/md2GC4CA – Alen

+0

什麼樣的的數據是你期待從ajax響應 - HTML,JSON? – McRui

+0

我期待JSON,你可以在我粘貼的代碼中看到 – Alen

0

如果你正在嘗試執行Ajax文件上傳或類似的事情,你必須在打印你的ajax響應文本後襬脫顯示更多的HTML。可能是這個錯誤信息。如果您使用PHP框架,則必須遵循框架語法來結束應用程序。如果你編碼純PHP,你可以在你的ajax響應文本後面使用'exit'。

希望這將有助於節省一些人的時間尋找解決方案。 :)快樂編碼!

7

我的解決方案是相當令人難以置信的。

<script type="text/javascript" src="/js/dataLayer.js?v=1"></script> 

在爲小寫所需的src屬性的文件名:

<script type="text/javascript" src="/js/datalayer.js?v=1"></script> 

並且有些莫名其妙地解決了這一問題。

在這兩種情況下,引用都返回404進行測試。

+0

我有同樣的問題,所以將文件名更改爲另一個名稱,它的工作。我的文件名在任何地方都沒有大寫字母。 – Deke

0

將其更改爲

$.post({ 
     url = 'getData.php', 
     data : { 'id' id } , 
     dataType : 'text' 
     }); 

這樣的ajax不會嘗試將數據解析成JSON或類似

0

似乎每個人都從這個差別經驗和therfore解決方案,以及:)這是我的「故事」。

我的東西來自一個validate.php文件與ajax提取。輸出本來是:

$response['status'] = $status; 
$response['message'] = $message; 
$response['param'] = $param; 

echo json_encode($response); 

而導致「意外令牌<」錯誤的錯誤只是認爲,在某些情況下,$消息尚未宣佈(但只有$狀態和$ PARAM)。所以,在代碼的開頭添加了這個。

$message = ''; // Default value, in case it doesn't get set later on. 

所以我想,這些「小事情」可能在這種情況下非常重要。所以一定要確實檢查你的代碼,並使其無懈可擊。

1

我已評論我的這段代碼:// $('#description').val('<?php echo $_POST['description']; ?>');,我得到了那個錯誤。

4

在測試示例應用程序時,在這兩行中得到了同樣的錯誤(「Uncaught SyntaxError:Unexpected token <」)。

<script type = "text/javascript" src="raphael-min.js"></script> 
<script type = "text/javascript" src="kuma-gauge.jquery.js"></script> 

控制後,我意識到,本地文件的位置不正確,並作爲結果我的本地服務器應用程序返回默認頁。客戶端應用程序可以找到這些文件,但創建的文件是默認頁面,而不是* .js文件。因此,我收到未捕獲的SyntaxError:意外的令牌<

我更改爲intenet上的原始位置並解決。

<script type = "text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/raphael/2.1.2/raphael-min.js"></script> 
<script type = "text/javascript" src="//www.jqueryscript.net/demo/Creating-Animated-Gauges-Using-jQuery-Raphael-js-kumaGauge/js/kuma-gauge.jquery.js"></script> 
+0

當我的腳本在子目錄'stuff/scripts'中時,發生了這種情況,但我去了URL stuff/whatever /而不是'stuff/whatever'。因爲'stuff/whatever/scripts'不存在。 – Noumenon

1
header("Location: route_to_main_page"); 

,同時具有自定義404錯誤處理的文件我已經遇到了這個問題。假設將其重定向到主頁面url,而不是拋出一些html內容。它運作良好。

然後我用它作爲下一個項目的骨架,因此不會改變新項目(不同的URL)上的「route_to_main_page」變成了「route_to_external_url」,所以你的代碼中的404錯誤(缺少CSS樣式表,js庫)將返回「未捕獲的SyntaxError:意外的令牌<」。

0

有同樣的錯誤。我的問題是由於圍繞我的項目目錄轉移而造成的,並且無法將路徑調整爲服務器上的靜態文件以反映新路徑(即./src/public,但應該是./public)。

0

當我將一些js文件移動到文件夾中,然後部署到生產環境中時,我遇到了類似的問題,經過一番爭論後,我發現js文件實際上並未部署到生產環境中。所以

  1. 請確保其中顯示了錯誤的文件中 確實存在服務器
  2. 給出的路徑是正確的

所以,在沒有js文件時,服務器則服務器如下回應

<!doctype html> 
    <html> 
     <someTag /> 
     <AnotherTag /> 
    </html> 

這就是爲什麼我們得到未捕獲的SyntaxError:意外的標記<

0

只有它爲我工作的地方是,當我放在public文件夾中的腳本,讓我index.html所在,然後將這些<script type="text/javascript" src="test/test.js"></script><body>標籤。

0

可能是因爲您要請求的資源是通過您的Web應用程序配置受限訪問的,即用戶必須記錄該應用程序才能提供該文件。

嘗試增加這Web.config文件(這是.NET應用程序):

<location path="js/resourcefile.js"> 
    <system.web> 
    <authorization> 
     <allow users="?" /> 
    </authorization> 
    </system.web> 
</location> 

你可以在任何地方把它關閉配置標記之前。

相關問題