如何用json回调封装json文件



我正在尝试解析Json文件响应,但是我遇到了麻烦。

我的javascript是:

var url=encodeURIComponent("http://localhost:8080/repositories/rep_name?query=some_query&Accept=application/sparql-results+json");   
    $.ajax({
            url: url,
            type:'GET',
            dataType: 'jsonp',
            success: function(data, textStatus, xhr) {
            // do something
            $('#doQuery').html("QUERY");
            },
            error: function(xhr, textStatus, errorThrown) {
            _UTILS.showModal("error", textStatus, 300, 100);
            }
        });

但是我得到了这个错误"Uncaught SyntaxError: Unexpected token:"在chrome中。我认为问题是我的服务器给我的响应没有包装json回调,因为当我检查我的响应时,它显示为像这样的纯json格式:

{
  "head" : {
    "vars" : [ "child", "parent", "count" ]
  }
}

而不是:

callback({
  "head" : {
    "vars" : [ "child", "parent", "count" ]
  }
})

但是当我检查来自ajax的请求url时,它实际上有"&callback="参数附加到url的末尾,像这样:

http://localhost:8080/repositories/rep_name?query=some_query&Accept=application/sparql-results+json&callback=jQuery21105273823537863791_1443406558624&_=1443406558625

为什么它仍然给我那个错误呢?

有一件事要注意的是,服务器发送回一个。srj文件,但它是json格式,我不知道这是否与错误有关。此外,我不能使用' dataType: 'json',否则我会得到"XMLHttpRequest无法加载。请求的资源上没有'Access-Control-Allow-Origin'标头。"但是我不认为我可以改变服务器

JSONP回调参数是对服务器的一个提示,您希望JSON封装在回调中。如果服务器没有专门设置为侦听参数并在需要时提供JSONP,那么它将忽略该参数。

由于服务器上没有Access-Control-Allow-Origin标头,使用纯JSON代替JSONP也是不允许的。

我会仔细检查以确保没有其他方式从服务器请求JSONP,否则,如果您无法访问服务器上的代码,并且无法通过其他方式请求JSONP,那么您将不幸地失去运气。

相关内容

  • 没有找到相关文章

最新更新