2014-04-01 43 views
0

我有這樣的代碼在我的JQuery文件:字符串數組JQuery的

$("#getFile").click(function() { 
    var fileName = $("#loadpFile").val() 

    var jqxhr = $.ajax({ 
    type: "POST", 
    url: "readFile.py", 
    data: {name:fileName} 
    }) 

    .done(function(data) { 
    console.log(data) 
    }) 

    .fail(function() { 
    alert('Malformed response from server'); 
    }) 
}); 

當#getFile被按下時,#loadpFile給出了必須引用的數據文件的名稱。此數據文件返回此:

"['#10.4_16', '#10.4_17', '#10.4_18']" 

我該如何作爲數組訪問?

當我這樣做:

.done(function(data) { 
    console.log($.parseJSON(data)) 
    }) 

我得到這個:語法錯誤:JSON.parse:意外的字符

我能做些什麼?

+0

爲什麼你把它當作一個字符串呢?你如何生成它? (這顯然不是有效的JSON) – zerkms

+0

該字符串不是有效的JSON。有效JSON中的字符串應該用雙引號括起來。 [JSONLint](http://jsonlint.org)是測試json有效性的有用網站。 – xbonez

+0

該字符串應該是:'[「#10.4_16」,「..」,「...」]',請注意引號... – vprasad

回答

0

'(單引號)不是一個JSON字符串有效的分隔符。你需要更換,以分析它:

JSON.parse("['#10.4_16', '#10.4_17', '#10.4_18']".replace(/'/g, '"')); 

然而,這是一個臨時的解決辦法。我建議去哪裏生成該字符串,並確保它首先輸出適當的JSON。

+0

我當前的標題是:print「Content-Type:text/html」,但是當我使用print「Content-Type:application/json」時,它失敗了,我找不到原因。由於HTML的工作,我剛剛去了。 – bluebird343

+2

它可能在'application/json'上失敗,因爲服務正在返回無效的JSON。 – SomeKittens

+0

我正在使用python,並且我只是發送了像這樣的數據:print json.dump(array)。現在沒有eval就能正確讀取它。謝謝。 ;) – bluebird343

-2

你的歸來例如,你可以試試這個:

data = data.replace("[","{").replace("]", "}"); 
eval("data = " + data+";"); 
+0

永遠不會EVAL代碼 –

+0

如果你知道你將會有什麼回報,你可以做得很好。沒有回報可以避免這種實踐。但是,如果您有可能收到危險代碼作爲回報,我同意你的意見。 – Zini

+0

謝謝!我正在使用eval,但我會一直收到來自文件的數組,所以它應該沒問題。 – bluebird343