Javascript 从远程服务器请求JSONP时遇到问题。$。如果失败了,我做错了什么?

Javascript 从远程服务器请求JSONP时遇到问题。$。如果失败了,我做错了什么?,javascript,jquery,json,ajax,jsonp,Javascript,Jquery,Json,Ajax,Jsonp,我正在尝试使用jQuery AJAX方法通过web API访问远程服务器。API是私有的,因此我无法提供我正在使用的URL,但以下是一个示例: https://api.somecompany.com/v2/search?oauth_token=OAUTH_TOKEN&keyword=KEYWORD&limit=LIMIT API支持JSONP,并通知用户在使用JSONP时,URL格式应为: https://api.somecompany.com/v2/search?oauth_

我正在尝试使用jQuery AJAX方法通过web API访问远程服务器。API是私有的,因此我无法提供我正在使用的URL,但以下是一个示例:

https://api.somecompany.com/v2/search?oauth_token=OAUTH_TOKEN&keyword=KEYWORD&limit=LIMIT
API支持JSONP,并通知用户在使用JSONP时,URL格式应为:

https://api.somecompany.com/v2/search?oauth_token=OAUTH-TOKEN&keyword=KEYWORD&limit=LIMIT&callback=callbackFunction
我知道我的Oauth令牌是有效的,因为当我在浏览器中运行URL时,它会显示所需的JSON,我知道JSON是有效的,因为我已经使用JSONLint进行了检查。使用第二个URL的浏览器中的数据格式如下所示:

callbackFunction({
"meta":{...}
"items":[...]
})
我试图使用jQuery从JSONP表单中的API中获取这些数据,但它似乎工作不正常,我一辈子都无法弄清楚。我使用的代码如下:

<!DOCTYPE html>
<html>
<head>
    <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
    <meta content="utf-8" http-equiv="encoding">
    <title>Template</title>
    <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
    <script type="text/javascript" src="http://code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
    <script type="text/javascript">
    $(function()
    {
        $.ajax({
            type: 'GET',
            url: 'https://api.somecompany.com/v2/search?oauth_token=OAUTH-TOKEN&keyword=KEYWORD&limit=10',
            dataType: 'jsonp',
            success: function(data)
                     {
                         alert('Success!');
                     },
            error: function (data, textStatus, errorThrown){
                         alert(textStatus);
                   },
           complete: function(data, textSearch){
                        alert(data.resonseText);
                        alert(textStatus);
                     }
           });

    });     
    </script>
</head>
<body>
</body>
<html>
https://api.somecompany.com/v2/search?oauth_token=OAUTH-TOKEN&keyword=KEYWORD&limit=10
我还尝试使用url:

https://api.somecompany.com/v2/search?oauth_token=OAUTH-TOKEN&keyword=KEYWORD&limit=10&callback=?
这似乎也不起作用。控制台仅显示:

GET http://code.jquery.com/jquery-latest.min.js [HTTP/1.1 304 Not Modified 34ms]

GET http://code.jquery.com/ui/1.11.4/jquery-ui.js [HTTP/1.1 304 Not Modified 35ms]

让我知道我是否应该添加更多更新。

我猜你实际上已经在URL中包含了
&callback=callbackFunction
部分,因为他们的文档就是这么说的

使用jQuery不需要这样做,而是让jQuery为您管理它。它将附加一个带有自动生成函数名的
回调
参数,自动生成函数,并为您处理所有管道


所以你的
url
应该是
https://api.somecompany.com/v2/search?oauth_token=OAUTH-TOKEN&keyword=keyword&limit=limit
(不带
&callback=callbackFunction
),因为您告诉jQuery您正在使用JSONP,它会为您做其他工作。

您的
url
变量的内容是什么样的?问题中的代码如果按字面意思使用(看起来像一个完整的测试页面),将失败,因为
url
完全未定义。但是我假设你已经对这个问题做了太多的调整…你在开发者控制台中看到了什么?API实际上返回了JSONP吗?我们无从得知,因为您模糊了URL,并且没有显示它返回的内容(您应该能够使用开发人员工具中的Net选项卡提取这些内容)。您是否查看了network选项卡中请求的response选项卡?您的控制台没有显示错误的事实有点令人惊讶。对于jsonp请求,它应该调用success,或者在控制台中打印语法错误。昆汀:不幸的是,api是专有信息,我不能给出url。即使我这样做了,文档也是私有的。API JSONP支持的文档非常小,我在HTML代码上方用自己的话给出了所有文档。我认为我的解释不太清楚,所以我道歉,但我实际上已经尝试了您之前提到的方法,并且得到了相同的响应。你还有其他建议吗?