jsonp crossbrowser来自域名或代码方面的错误

时间:2013-10-22 14:07:25

标签: jquery ajax json cross-browser jsonp

我是api和json获取数据的新手,所以我有一个问题,就是从我的网站使用jsonp来获取信息:http://pda.bilgiteknolojileri.net/我知道域名是pda而不是api :)这不是我的错误,不是我的域名,但我可以调整它们,无论如何我有一个代码:

    var url='http://pda.bilgiteknolojileri.net';
    $.ajax({
        type: "GET",
        url: url,
        dataType: 'jsonp',
        jsonp: 'jsonp',
        crossDomain: true,
        success: function(cats) {
            $.each(cats.data, function(i, data) {
                var cat=data.cat;
                var cat_id=data.cat_id;
                $('#category').append('<option value="'+cat_id+'">'+cat+'</option>');
            });
        }
    });

据我所知,代码还可以,但是在控制台中有一个错误: Uncaught SyntaxError: Unexpected token <第二个不是大错误Resource interpreted as Script but transferred with MIME type text/html我做错了什么?它是来自域方或我的代码中的跨浏览器错误吗?

请求标题:

GET /?callback=jQuery182007281651743687689_1382452295311&_=1382452295320 HTTP/1.1
Host: pda.bilgiteknolojileri.net
Connection: keep-alive
Cache-Control: no-cache
Pragma: no-cache
Accept: */*
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36
DNT: 1
Accept-Encoding: gzip,deflate,sdch
Accept-Language: tr,en-US;q=0.8,en;q=0.6,ru;q=0.4
Cookie: fbm_224237501004640=base_domain=.bilgiteknolojileri.net; CFID=337971; CFTOKEN=5130db21daca4ae5-BE9FEE21-0FA8-399A-7485246A32933BCE; JSESSIONID=7030f7b10f91d2d2d0ce10456f5c7a302350; WRK_COOKIE_ID=BE9FF125%2DA082%2D5206%2DD01747735EADD58B; __utma=56243896.53108638.1381244578.1382443118.1382450419.21; __utmc=56243896; __utmz=56243896.1381244578.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)

查询字符串参数

callback:jQuery182007281651743687689_1382452295311
_:1382452295320

回复标题:

HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET
Date: Tue, 22 Oct 2013 14:19:24 GMT

问题是响应是文本/ html格式,它应该是javascript / application,我应该更改什么?我根本得不到任何数据...... 谢谢你的帮助!

1 个答案:

答案 0 :(得分:2)

这里有两个问题:

  1. 服务器响应标头声明了mime-type text/html
  2. 服务器未响应JSONP对象。这是最大的问题。
  3. 服务器使用HTML包装您的JSON对象。如果你看一下响应体: http://pda.bilgiteknolojileri.net/?callback=jQuery182007281651743687689_1382452295311&_=1382452295320

    你会看到它以:

    开头
    <html>
        <head><meta ...
    

    第一个<是造成意外令牌错误的原因。

    您的服务器需要回复更多类似的内容:

    jQuery182007281651743687689_1382452295311({...JSON OBJECT...})
    

    可在此处找到更多解释:Confused on how a JSONP request works

    之前曾提到,但您的问题几乎与此问题重复:json Uncaught SyntaxError: Unexpected token :

    不同之处在于,不是只发送了一个JSON对象,而是发送了一个带有JSON INSIDE 的html文档。