2015-04-08 186 views
1

我已經搜索了周圍的這個錯誤,沒有一個解決方案似乎可以幫助我瞭解我所得到的結果。我正在做一個ajax請求,我正在嘗試檢索服務器發佈的json輸出。我可以打印出我試圖捕獲的json(通過console.log()),而不是在jQuery.parsejson()中處理它。我不斷收到「Uncaught SyntaxError:Unexpected token o」錯誤。請有人建議嗎?正在執行ajax成功函數 - jQUERY

我的代碼:

// Make ajax request 
     $.ajax({ 
      url: 'http://localhost/multipleFileUpload_adam/webservice/delete_pdf.php', 
      data: {delete_array: jsonString}, 
      dataType: 'json', 
      type: 'POST', 
      success: function(data){ 
       console.log(data); 
       var x = jQuery.parseJSON(data); 
        }, 

的console.log(數據)給(我試圖找回 'success_deleted' 點陣以下幾點:

Object {success_delete: Array[2], unsuccess_delete: Array[0], input array: Object} 

如果我刪除的代碼行:

var x = jQuery.parseJSON(data); 

然後我能夠得到console.log(數據)工作。如果我添加它,我得到上面提到的錯誤。

+3

我可能完全錯過了這個問題,但是不能只將'x'分配給'data.success_delete'嗎? –

回答

3

這條線:

dataType: 'json', 

告訴jQuery來忽略服務器返回的內容類型始終解析響應,如果它是JSON。

然後:

success: function(data){ 

的JavaScript值(這是一個對象),你從解析JSON得到傳遞到data

這條線:

jQuery.parseJSON(data); 
  1. 注意到的data(對象)的值
  2. 其轉換成字符串(這將是"[object Object]"
  3. 嘗試來分析該字符串作爲JSON(這不是)。

Then I am able to get the console.log(data) to work. if i add it i get the error mentioned above.

是的。這是預期的行爲。不要這樣做。只需使用data中已解析的數據即可。

+0

所以通過添加'dataType:'行'json'',我從服務器獲得的json響應會自動解析爲一個Javascript對象,然後將其放置在'data'中? – dave

+0

如果服務器以正確的內容類型進行響應,那麼指定'dataType'不會有任何區別。如果jQuery認爲它正在獲取JSON,那麼JSON響應將被解析(對象,數組,字符串,數字,布爾值或空值),結果將作爲參數傳遞給成功。 – Quentin

2

有一個分析錯誤,因爲數據已經是一個對象,所以它期待JSON和獲取對象。 'O'是意想不到的角色。嘗試不使用parseJSON函數。