使用jquery ajax检索纯文本并转换为JSON

时间:2010-10-07 15:40:37

标签: jquery ajax json

更新:以下在IE8中工作正常,但数据在firefox中返回null:

$.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);
});

我有一个jetty服务器,它以纯文本形式生成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 个答案:

答案 0 :(得分:-2)

如果您无法让服务器发送正确的Content-type标题(即应用程序/ json text / javascript ),您应该只是希望文本dataType: 'text'并对其进行评估。

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

答案 1 :(得分:-2)

不确定这是否是问题的根本原因,但我知道jQuery对JSON格式非常严格。您的某些JSON值未包含在引号中。例如:

"status":0

我不在一个可以在我自己的环境中轻松确认的地方,所以它可能是一个完全红色的鲱鱼。但值得快速仔细检查。