标签: jsonp

IE6中的jQuery JSONP问题

我在使用IE6从不同域中的服务器检索JSONP响应时遇到了问题.

当我使用JSONP向与网页相同的域中的服务器进行相同的AJAX调用时,所有浏览器(包括IE6)都可以正常运行.但是,当我使用JSONP在域(XSS)之间进行调用时,Internet Explorer 6会锁定.具体来说,CPU达到100%并且永远不会达到"成功"回调.我在域之间取得成功的唯一时间是响应非常短(通常少于150个字节).响应的长度似乎很重要.

我正在使用jQuery 1.2.6.我已经尝试了$ .getJSON()方法和$ .ajax(dataType:"jsonp")方法但没有成功.这在FF3和IE7中运行得很好.我找不到其他有类似问题的人.我认为IE6中的jQuery完全支持这种类型的功能.

非常感谢任何帮助,

安德鲁


这是进行AJAX调用的html页面的代码.制作此文件(和jquery库)的本地副本,并使用IE6进行拍摄.对我来说,它总是会导致CPU出现尖峰而没有呈现任何响应.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Untitled Page</title>
    <script type="text/javascript" src="Scripts/jquery-1.2.6.min.js"></script>
    <script type="text/javascript" src="http://devhubplus/portal/search.js"></script>
</head>
<body>
<a href="javascript:test1(500, 'wikiResults');">Test</a>
<div id="wikiResults" style="margin-top: 35px;"></div>

<script type="text/javascript">
    function test1(count, targetId)
    {
        var dataSourceUrl = "http://code.katzenbach.com/Default.aspx?callback=?";
        $.getJSON(dataSourceUrl, {c: count, test: "true", nt: new Date().getTime()}, function(results) {
                var response = new String();
                response += "<div>";
                for(i in results)
                {
                    response += results[i];
                    response += " "; …
Run Code Online (Sandbox Code Playgroud)

ajax jquery jsonp internet-explorer-6

4
推荐指数
1
解决办法
6897
查看次数

什么是JSON-P&你怎么发音呢?

可能重复:
请解释JSONP

相关问题:JSONP的说明和用法.

我知道JSON是什么,但JSON-P是什么?

你是怎么发音JSON-P的?

javascript json jsonp

4
推荐指数
2
解决办法
4681
查看次数

jQuery + JSONP + Yahoo查询语言

我想从外部来源获得实时汇率,所以我找到了这个很棒的网络服务:

货币转换器

这项服务就像一个魅力,唯一的缺点是它不提供JSONP结果,只提供XML.因此,在尝试使用jQuery $ .ajax()来使用此Web服务时,我们遇到了跨浏览器问题.

所以我找到了Yahoo Query Language,它将结果作为JSONP和mangae返回,以使用其他Web服务并返回结果.这也有效,这是一个示例URL:

http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20xml%20where%20url%3D'http%3A%2F%2Fwww.webservicex.net%2FCurrencyConvertor.asmx%2FConversionRate%3FFromCurrency%3DNOK%26ToCurrency%3DEUR'&format=json&diagnostics=true&callback=cbfunc
Run Code Online (Sandbox Code Playgroud)

这个URL返回JSONP结果并且像魅力一样工作,但是当我在我的代码中使用它时会出现问题:

       $.ajax({
            type: "GET",
            url: urlToWebservice,
            contentType: "application/json; charset=utf-8",
            dataType: "jsonp",
            success: function(data) {
                $("#status").html("OK: " + data.text);
            },
            error: function(xhr, textStatus, errorThrown) {
                $("#status").html("Unavailable: " + textStatus);
            }
        });
Run Code Online (Sandbox Code Playgroud)

当我尝试运行此代码时没有任何反应,我可以在我的Firebug javascript调试器中看到此错误消息:

cbfunc is not defined
Run Code Online (Sandbox Code Playgroud)

cbfunc是围绕JSON响应的容器的名称,但为什么说没有定义?

编辑:

这是我的新代码,但我仍然得到了 cbfunc is not defined

        $.ajax({
            url: "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20xml%20where%20url%3D'http%3A%2F%2Fwww.webservicex.net%2FCurrencyConvertor.asmx%2FConversionRate%3FFromCurrency%3DNOK%26ToCurrency%3DEUR'&format=json&callback=cbfunc",
            dataType: 'jsonp',
            jsonp: 'callback',
            jsonpCallback: 'cbfunc'
        });
        function cbfunc(data) {
            alert("OK");
        }
Run Code Online (Sandbox Code Playgroud)

并且"OK"消息永远不会被触发......

javascript jquery json jsonp web-services

4
推荐指数
1
解决办法
6240
查看次数

JQuery JSONP跨域调用没有做任何事情

每当我通过jquery对我设置的任何页面(本地或我的服务器)进行JSONP调用时,我得到的只是静默处理.Firebug报告200 OK,响应看起来不错.我设置警报框以在成功或失败时弹出,但都不会出现.我用什么网址似乎并不重要,没有任何东西弹出.

但是,如果我使用twitter json页面,那么我的成功警告框会按预期出现,所以我的回复显然有问题,但我不知道是什么.

作为实验,我复制了twitter json响应并将其上传到我的booroo.com域.它应该是相同的,但仍然没有.我将响应页面上的标题设置为"application/json"和utf-8但仍然没有.

请帮助,我现在花了一整天时间,我不知道还有什么可以尝试.

$.ajax({
  dataType: 'jsonp',
//  url: 'http://booroo.com/json.asp?callback=?',
  url: 'http://twitter.com/users/usejquery.json?callback=?',
  success: function () {
        alert("Success");     
    },
    error: function(x,y,z) {
        alert("error"+x.responseText);
    }       
});
Run Code Online (Sandbox Code Playgroud)

响应json.asp文件包含以下经典ASP头文件,然后是从twitter复制的json响应(我已经尝试过其他人没有任何成功.)

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%
Response.Expires = 0
Response.Expiresabsolute = Now() - 1
Response.AddHeader "pragma","no-cache"
Response.AddHeader "cache-control","private"
Response.CacheControl = "no-cache"
response.ContentType="application/json"
Response.CodePage = 65001 
Response.CharSet = "UTF-8" 
%>({"test_param":12345});
Run Code Online (Sandbox Code Playgroud)

jquery jsonp

4
推荐指数
1
解决办法
2010
查看次数

json与谷歌地理编码api

这是在输入位置时得到纬度和长度的代码.我相信我的代码根据我的知识正确.但是我在进入一个地方后得到一个空白页面.

这是代码:

<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){

    var url="http://maps.googleapis.com/maps/api/geocode/json?address=";
    var query;
    var sensor="&sensor=false";
    var callback="&callback=?";


    $("button").click(function(){
          query=$("#query").val();
          $.getJSON(url+query+sensor+callback,function(json){

             $('#results').append('<p>Latitude : ' + json.results.geometry.location.lat+ '</p>');
             $('#results').append('<p>Longitude: ' + json.results.geometry.location.lng+ '</p>');

});


    });
});


</script>

</head>
<body>

<input type="text" id="query" /><button>Get Coordinates</button>
<div id="results"></div>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

javascript json jsonp google-geocoder

4
推荐指数
2
解决办法
2万
查看次数

如何防止缓存.NET JSON源

我创建了简单的.aspx页面,它在数据库中查询一些实时数据,然后返回一个JSONP(或者最后一个类似JSONP的)feed. Content-Type application/json; charset=utf-8

这是输出的格式,或多或少:

jsonp1307643489579([
  ["12345","Text Here","99999","More Text Here","True","False","7/31","1"...],
  ["12345","Text Here","99999","More Text There",...]
]
Run Code Online (Sandbox Code Playgroud)

然后是一个JQuery .getJSON调用:

var url = "myURL.aspx?id=123&callBack=?";
$.getJSON(url, null, function(msg) { etc etc.
Run Code Online (Sandbox Code Playgroud)

这一切都很好,除了以下.在我的开发环境和本地服务器上,每次都会重新生成新数据.但是在生产Web服务器上,数据顽固地缓存,直到我回收IIS应用程序池(!)

我试过的一些事情没有成功.

1/cache:ajaxSetup中的false不起作用.

2 /关闭web.config中的输出缓存.

2a/OutputCache Location ="无"在aspx页面声明中没有这样做.

3 /在.getJSON(url)调用中添加了随机唯一查询字符串数据.看看我们如何为每个电话追加一个独特的回调参数,我想这无论如何都已经发生了.

知道为什么我的Web服务器持有这些缓存的应用程序/ JSON文件?

编辑: 我正在查看从Web服务器下来的实际.aspx源,并将它们缓存在那里.所以据我所知,这是一个Web服务器缓存问题,不一定是JQUERY缓存问题.

.net iis jquery json jsonp

4
推荐指数
2
解决办法
1622
查看次数

是否有任何javascript库来捕获鼠标/键盘事件并将它们发送到外部服务器?

我需要的是:

  • 可以捕获所有键盘事件
  • 可以捕获所有鼠标事件(点击,移动)
  • 可以捕获页面滚动,可能会关注浏览器的差异
  • 使用JSONP(或其他任何东西,但不仅需要在最新的浏览器中工作)将数据发送到外部服务器
  • 非常小,最多xx kB我希望

我想找到一些至少有3个以上正确实现的东西.如果他们可以帮助我,我也可以看看像Dojo或JQuery这样的js框架,但是我能够保持它足够小吗?

javascript ajax jquery dojo jsonp

4
推荐指数
1
解决办法
5147
查看次数

在为Fusion Table进行SQL查询时出错403

我一直在尝试将项目迁移到新的API,但在尝试SQL查询时遇到以下错误,如下所示:

https://www.googleapis.com/fusiontables/v1/query?sql=SELECT*FROM 1KxVV0wQXhxhMScSDuqr-0Ebf0YEt4m4xzVplKd4&key = myKey

这是返回的内容:

{
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "reason": "accessNotConfigured",
    "message": "Access Not Configured"
   }
  ],
  "code": 403,
  "message": "Access Not Configured"
 }
}
Run Code Online (Sandbox Code Playgroud)

但是,以下查询确实有效:https: //www.googleapis.com/fusiontables/v1/tables/1bTX-w0Lt6nT8jq4R0q2pwFvuN_X5iPDOKHWFhw/columns?key=myKey

我究竟做错了什么?

json jsonp http-status-code-403 google-fusion-tables

4
推荐指数
1
解决办法
2153
查看次数

如果jQuery认为它正在接收JSONP请求,我该如何解释JSON?

我试图从网站(特别是Yummly)获取一些API数据,看起来当我尝试执行JSONP请求时,我收到JSON数据.这会导致"Uncaught SyntaxError:UnexpectedToken:".

试图这样做的代码是:

var keywords = $('#input-text').val();
var url = "http://www.yummly.com/api/recipesq="+keywords+"&_app_id=<snipped-app-id>&_app_key=<snipped-api-key>&";
 $.ajax({                                                                            
      type: 'GET',
       url: url,
       dataType: 'jsonp',
       //dataType: 'jsonp json'
       success: function() { console.log('Success!'); },
       error: function(data, data2) { console.log(data); },
       //jsonp: false,
       //jsonpCallback: 'recipeGet'                                          
  });
});
Run Code Online (Sandbox Code Playgroud)

我试图通过重载dataType从JSONP转换为JSON,但是这并没有导致与上面不同的结果.我也试过更改回调函数,但是当我收到语法错误时它没有转到函数.当我不使用JSONP并且只使用JSON时,我收到一个,"XML-AccessHadpRequest无法加载Origin-Control-Allow-Origin不允许使用Origin.".

任何帮助将不胜感激,我一直在努力解决这个问题.

javascript ajax jquery json jsonp

4
推荐指数
1
解决办法
692
查看次数

Angular 1.6.3不允许1.5.8中允许的JSONP请求

Angular 1.6.3不允许允许的请求,1.5.8我收到此错误:

$sce:insecurl
Processing of a Resource from Untrusted Source Blocked
Run Code Online (Sandbox Code Playgroud)

完整错误可在此处获得.

我想升级我的角度版本1.6.3以获得最新和最好的,但我依赖于这个API.有没有办法让我将其标记为可信API或使用此API的其他方式?这两个版本之间的区别是什么?

这是我试图运行的代码:

var app = angular.module('app', []);
app.controller('firstController', ['$http', function($http) {
  console.log('firstController up and running');
  var key = 'XXXXXXXXXXXXX'; // is an actual key
  var self = this;

  self.animal = {};

  self.getRandomPet = function(){
    var query = 'http://api.petfinder.com/'; // baseURL for API
    query += 'pet.getRandom'; // selecting the method we would like to return
    query += '?key=' + key; // Giving …
Run Code Online (Sandbox Code Playgroud)

javascript jsonp angularjs angularjs-http angularjs-1.6

4
推荐指数
1
解决办法
4325
查看次数