更新:以下在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");
}
});
但是,我得到的结果总是为空。我做错了什么?
答案 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
我不在一个可以在我自己的环境中轻松确认的地方,所以它可能是一个完全红色的鲱鱼。但值得快速仔细检查。