2011-12-01 20 views
3

以下是包含對負責發出AJAX調用的JavaScript函數的調用的HTML。據我所知,錨標籤不應該有一個值屬性,但我用它與jQuery的.attr(「值」)方法。使用jQuery的AJAX - 語法錯誤?

<a href="javascript:;" onclick="ajaxTest();" title="Execute AJAX" value="executeAJAX">Execute AJAX</a> 

以下是JavaScript函數。如果它有任何意義,它本身就包含在一個.js文件中。

function ajaxTest() { 
    $.ajax({ 
     type: "POST", 
     url: "doAJAX", 
     data: {"selectedScope": "5", 
       "selectedView": "6"}, 
     dataType: "text", 
     success: function(responseData) { 
      $("#replaceThis").append(responseData); 
     } 
    }); 
} 

每次鏈接被點擊,出現在Firefox的Web控制檯一個「語法錯誤」消息。然而JavaScript似乎按預期工作。

我只是想了解爲什麼我得到的錯誤。

我應該補充說我正在使用jQuery 1.7.1。

我執行搜索和唯一的解決辦法我發現是,對「數據」選項鍵都應該包含在雙引號所以,我實現了,但我仍然得到語法。

謝謝。

EDIT:

Looking at the Firebug console, the code above doesn't trigger an error like it did in Firefox's console, however, I saw the following in the XML part of the POST Request:

XML Parsing Error: syntax error Location: moz-nullprincipal:{1d13df07-25fb-4058-9f82-ce1bef3c8949} Line Number 1, Column 1:
alskdfjlaksjdfjasdfl
^

The "alskdfjlaksjdfjasdfl" is simply what I've set up my servlet to return as I test this stuff out.

This is somewhat weird because it seems like jQuery is trying to parse the response as XML although I've explicitly stated it to be text.

+0

它看起來不像是關閉數據對象。數據:{「selectedScope」:「5」,「selectedView」:「6」,< - 在最後一個逗號前需要有一個} – Jemaclus

+0

同樣的問題,firefox ajax試圖解析文本數據。 – fantastory

回答

8
function ajaxTest() { 
    $.ajax({ 
     type: "POST", 
     url: "doAJAX", 
     data: {"selectedScope": "5", 
       "selectedView": "6"   <---- here (drop comma, add bracket) 
       }, 
     dataType: "text", 
     success: function(responseData) { 
      $("#replaceThis").append(responseData); 
     } 
    }); 
} 
+0

Derp。 +1 ........ – AlienWebguy

+1

有時你只需要新鮮的眼球。 –

+0

語法錯誤花花公子。 –

2

這是問題,你缺少尾隨}數據對象

編輯:

如果這個問題不知道,但我認爲你可以在數據對象中跳過圍繞您的密鑰的引號(以及值的周圍,如果您只打算髮送數字,請保留它們,例如打算髮送字符串):

編輯2:

根據jQuery documentation,.append()需要使用DOM元素,HTML字符串,或jQuery對象。因此,我創建了一個響應的DOM文本節點,並附加了它,而不僅僅是文本字符串。請注意,編輯是未經測試

function ajaxTest() { 
    $.ajax({ 
     type: "POST", 
     url: "doAJAX", 
     data: { 
      selectedScope: 5, 
      selectedView: 6 
     }, 
     dataType: "text", 
     success: function(responseData) { 
      $("#replaceThis").append(document.createTextNode(responseData)); 
     } 
    }); 
} 
+0

感謝您的快速響應!對不起,這只是一個複製粘貼錯誤。我已經修復了原始問題中的括號,它仍然觸發語法錯誤。 – Deity

+0

@Deity查看我的更新回答 –

+0

謝謝。我已經通過更多信息更新了我的問題,看看它是否有助於縮小問題的範圍。 – Deity

2
function ajaxTest() { 
    $.ajax({ 
     type: "POST", 
     url: "doAJAX", 
     data: { 
      "selectedScope": "5", 
      "selectedView": "6" 
     }, // <-- need closing curly brace and comma 
     dataType: "text", 
     success: function(responseData) { 
      $("#replaceThis").append(responseData); 
     } 
    }); 
} 

編輯

我得到它的工作here on jsFiddle

此外,嘗試改變

<a href="javascript:;" ... 

<a href="javascript:void();"...` 

EDIT 2

我得到它的工作的另一種方式爲好。 (使用Firefox 8.0.1和Jquery 1.7。1)

See it in action here.

+0

感謝您的快速響應!對不起,這只是一個複製粘貼錯誤。我已經修復了原始問題中的括號,它仍然觸發語法錯誤。 – Deity

+0

哦,好吧,好可惜。檢查我的編輯。 –

+0

謝謝。我會繼續嘗試。我還用更多的信息更新了這個問題,看看是否有幫助。 – Deity

1

那是因爲你忘了把一個}data參數。試試這個:

function ajaxTest() { 
    $.ajax({ 
     type: "POST", 
     url: "doAJAX", 
     data: {"selectedScope": "5", 
       "selectedView": "6"}, 
     dataType: "text", 
     success: function(responseData) { 
      $("#replaceThis").append(responseData); 
     } 
    }); 
} 

一個推薦:當你有這樣的問題。使用Google Closure Compiler Service。它會告訴你究竟你的問題在哪裏。或者如果您使用Firefox,則可以使用Firebug

+0

感謝您的快速響應!對不起,這只是一個複製粘貼錯誤。我已經修復了原始問題中的括號,它仍然觸發語法錯誤。 雖然我會看看Google的Closure編譯器服務。 – Deity

0
function ajaxTest() { 
    $.ajax({ 
     type: "POST", 
     url: "doAJAX", 
     dataType: "html", 
     data:{ 
       "selectedScope": "5", 
       "selectedView": "6" 
     }, 
     success: function(responseData) { 
      $("#replaceThis").append(responseData); 
     } 
    }); 
} 
6

我最近遇到了同樣的問題。 jQuery似乎正確地處理了數據和數據類型,但是它卻是Firefox返回的語法錯誤,這就解釋了爲什麼你的代碼正在按預期執行,但仍然向控制檯輸出錯誤。

如果你看開發者控制檯,你可以看到Firefox正在將純文本數據解釋爲另一種格式(可能是XML)。 Firefox輪胎將數據解析爲XML,但不能這樣做,因爲它不是有效的XML,導致將「語法錯誤」輸出到控制檯。

分辨率這個問題對我來說是編輯服務器,以便它返回下面的頭:

Content-Type: "text/plain" 

這隻似乎是與Firefox的問題,瀏覽器沒有遇到這個問題。有一個Firefox bug here這似乎涉及到這個問題。