我有一个html文件,其中有几个d3图直接用脚本标签写入其中.当我将其中一个图表外包到外部js文件中时,我收到此消息"NS_ERROR_DOM_BAD_URI:访问受限制的URI被拒绝".如果我用d3.json删除代码,它读取本地json文件,则错误消失.但是必须能够将json文件加载到嵌入到html中的外部js中,对吗?
d3.json("forcetree.json", function(json) {
root = json;
update();
});
Run Code Online (Sandbox Code Playgroud) 使用JQuery,我如何调用需要基本身份验证的JSONP API?
我可以以编程方式处理此问题,还是用户必须进行交互并在登录对话框中输入用户名和密码?
我正在使用JSONP ajax调用来加载来自不同域的一些内容,如果用户在按钮上导致"鼠标悬停",则执行所有这些操作.
我可以将$ .ajax()调用返回捕获为xhr对象,并在每次用户导致"鼠标悬停"时使用它来中止ajax请求.但是JSONP回调函数仍然被调用,这会导致错误,我认为这是因为xhr.abort()方法不会阻止调用回调函数.
我尝试使用try {} catch(e){}围绕$ .ajax()调用,但在调用xhr.abort()方法后,错误仍在继续.
有没有办法处理该异常?
引发的异常是这样的(根据Firebug): jQuery16102234208755205157_1308941669256不是函数
而异常的内部结构是这样的: jQuery16102234208755205157_1308941669256({...来自不同域的我的json数据....})
$.ajax({
type : "GET",
dataType : "jsonp",
url : '/',
data : {}
success: function(obj){
}
});
Run Code Online (Sandbox Code Playgroud)
我如何使用$ .ajax dataType:jsonp跨域发布数据?
在我的应用程序中,我在一个子域(dev.u413.com)上有一个网站,我使用jQuery向另一个子域(api.u413.com)上的JSON api发出ajax请求.当我检查Chrome开发工具和Firefox Firebug中的请求时,我的请求似乎被阻止了Access-Control-Allowed-Origin.我设置document.domain为当前域的后缀:document.domain = 'u413.com';.
这是我的要求:
$.ajax({
dataType: 'json',
data: { parseAsHtml: true, cli: 'help' },
url: 'http://api.u413.com/',
success: function (response) {
alert(response.Command);
}
});
Run Code Online (Sandbox Code Playgroud)
如果我将ajax请求修改为在同一个域上,则请求成功.
$.ajax({
dataType: 'json',
crossDomain: false,
data: { parseAsHtml: true, cli: 'help' },
url: 'http://dev.u413.com/',
success: function (response) {
alert(response.Command);
}
});
Run Code Online (Sandbox Code Playgroud)
为什么会这样?浏览器不应该抱怨跨域问题,因为我document.domain根据相同原始策略的指南设置了两个子域的公共后缀.
我目前正在使用jsonp的应用程序,但我觉得正确的ajax请求应该按照我上面链接的相同原始策略工作.如果我不需要,我宁愿不使用jsonp.是否无法跨子域定期发出ajax请求?
我正在向我的node/express服务器发送JSON结构并将对象保存到数据库中.问题是我发送带有整数和布尔值的JSON,但所有内容都保存为字符串.
这是我的节点/快递代码:
var express = require('express');
var app = express();
app.enable("jsonp callback");
app.use(express.bodyParser());
// allow cross origin scripting to get data from devices directly
app.all('*', function(req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
res.header('Access-Control-Allow-Headers', 'Content-Type');
next();
});
app.post('/departures', function(req, res) {
/* I started using this to convert back to integers - but need to solve the problem
for (var i in req.body.data) {
req.body.data[i].siteid = parseInt(req.body.data[i].siteid);
}
*/
console.log('saving data '+JSON.stringify(req.body.data));
positionProvider.save(req.body.data, function(){
res.json({status:'success'});
}) …Run Code Online (Sandbox Code Playgroud) 看起来几乎每个关于$ http或angularjs的问题或解释都假定您可以修改请求的响应.我不能这样做,我得到的反应是错误的(根据AngularJS解析器).它以一致的方式出错,因此我可以在解析之前修改纯文本以解决问题,但是在默认(基于内容类型的?)解析之后,响应拦截器和转换响应函数都会发生.
编辑:问题在于我需要使用JSONP方法来从另一个站点请求信息,但数据没有预期的JSONP回调所以(我仍然不确定它是否基于浏览器)在内容或AngularJS代码上)抛出语法错误.
新问题:有没有人知道解决这个问题的方法?
我有一些本地html/js文件,我想通过https调用一些远程服务器,并最终使用基本身份验证的请求.
我遇到两个问题.首先,如果我没有为dataType指定'jsonp',jQuery.ajax()请求将返回错误:
访问受限制的URI拒绝代码:1012
我的请求是否被视为跨域,因为我的主要工作文件存储在本地,但是从其他地方的服务器检索数据?
很好,我更新了呼叫,现在它看起来像:
$.ajax({
url: myServerUrl,
type: "GET",
dataType: "jsonp", // considered a cross domain Ajax request if not specified
username: myUsername,
password: myPassword,
success: function(result)
{
// success handling
},
error: function(req, status, errThrown){
// error handling
}
})
Run Code Online (Sandbox Code Playgroud)
因为我需要使用基本身份验证,我传递用户名/密码,但如果我监视请求,我看不到它被设置,此外,服务器发送错误响应,因为它没有预期的信息.
另外,因为我已经jsonp设置,所以beforeSend不会被调用.
如何使用基本身份验证为此请求传递凭据?
我试图解析服务器的响应,我是这个主题的新手,不幸的是它是JSONP格式.我不知道如何解析JSONP格式,当我尝试使用JSON Parser时,它返回null值.谁能帮助我这样做...
提前致谢.
这个Request.JSON http://mootools.net/demos/?demo=Request.JSON以这样的方式使用JSON数据,
var data = {"previews":[
{"Countrycode":"us", "src":"us.jpg", "description":"desc will be here"},
{"Countrycode":"uk", "src":"uk.jpg", "description":"desc will be here"},
]};
Run Code Online (Sandbox Code Playgroud)
在上面的方法中,我们使用Countrycode&images通过写每个图像的名称我们自己.
我正在寻找一种方法,Geonames通过http://api.geonames.org/export/geonamesData.js?username=orakzai来检索Countrycode并CountryFlags通过http://www.geonames.org/flags/x/xx.gif其中xx是2个字母的ISO国家代码
jsonp ×10
jquery ×6
javascript ×4
json ×4
ajax ×3
cross-domain ×2
abort ×1
android ×1
angularjs ×1
api ×1
callback ×1
d3.js ×1
express ×1
node.js ×1
web-services ×1