0

我已经使用这个函数来处理带有json的数据,并且我以错误200响应。

错误导致浏览器中的 url 有效,但是如果我使用 jquery 调用该函数不起作用。

功能:

function solrQuery(query) {
    $.ajax({
        url: 'http://localhost:8081/solr/select',
        type: "GET",
        data: {
            'q': query,
                'rows': "0",
                'facet.limit': "-1",
                'facet.mincount': "1",
                'facet': "true",
                'facet.field': "manufacturer",
                'wt': "json"
        },

        dataType: 'json',
        success: function (data) {
            $('#cars').html('');

            if (button === 'listCars') {
                for (var i in data.facet_counts.facet_fields.manufacturer) {
                    //          if (!$.isNumeric(data.facet_counts.facet_fields.manufacturer[i])) {
                    var imagen = 'img/logo-cars/' + data.facet_counts.facet_fields.manufacturer[i] + '-logo-small.gif';
                    var dataImg = document.createElement('img');
                    $(dataImg).attr('src', imagen).attr('id', data.facet_counts.facet_fields.manufacturer[i]);
                    //          }
                    $('#cars').append(dataImg);

                }
            }
        },
        error: function (data) {
            alert("ccc");
        }
    });
}

错误的 URL 结果:

/solr/select?q=*%3A*&rows=0&facet.limit=-1&facet.mincount=1&facet=true&facet.field=manufacturer

此 URL 正确,在浏览器中找到查询 JSON。

结果是:

{
    "responseHeader": {
        "status": 0,
        "QTime": 1,
        "params": {
            "facet": "true",
            "facet.mincount": "1",
            "q": "*:*",
            "facet.limit": "-1",
            "facet.field": "manufacturer",
            "wt": "json",
            "rows": "0"
        }
    },
    "response": {
        "numFound": 84,
        "start": 0,
        "docs": []
    },
    "facet_counts": {
        "facet_queries": {},
        "facet_fields": {
            "manufacturer": [
                "abarth",
                1,
                "audi",
                7,
                "austin",
                1,
                "bmw",
                2,
                "daewoo",
                2,
                "ford",
                1,
                "fso",
                1,
                "honda",
                1,
                "hyundai",
                1,
                "jaguar",
                3,
                "lexus",
                1,
                "mazda",
                1,
                "mitsubishi",
                1,
                "nissan",
                1,
                "pontiac",
                1,
                "seat",
                1
            ]
        },
        "facet_dates": {},
        "facet_ranges": {}
    }
}

问题出在哪里。谢谢。

4

1 回答 1

0

也许您可以通过将dataType: 'json'替换为dataType: 'jsonp'并添加 jsonp: 'json.wrf' 来使用 JSONP,

            function solrQuery(query) {
                $.ajax({
                url: 'http://localhost:8081/solr/select',
                type: "GET",
                data: {
                    'q': query,
                    'rows': "0",
                    'facet.limit': "-1",
                    'facet.mincount': "1",
                    'facet': "true",
                    'facet.field': "manufacturer",
                    'wt': "json"
                },
            //dataType: 'json', CHANGE FROM AJAX TO JSONP FOR CROSS DOMAIN ISSUE                       
            dataType: 'jsonp',
            jsonp: 'json.wrf',


                success: function (data) {
                    $('#cars').html('');

                    if (button === 'listCars') {
                    for (var i in data.facet_counts.facet_fields.manufacturer) {
                        //          if (!$.isNumeric(data.facet_counts.facet_fields.manufacturer[i])) {
                        var imagen = 'img/logo-cars/' + data.facet_counts.facet_fields.manufacturer[i] + '-logo-small.gif';
                        var dataImg = document.createElement('img');
                        $(dataImg).attr('src', imagen).attr('id', data.facet_counts.facet_fields.manufacturer[i]);
                        //          }
                        $('#cars').append(dataImg);

                    }
                    }
                },
                error: function (data) {
                    alert("ccc");
                }
                });
            }
于 2013-05-27T01:40:36.357 回答