这是我的代码,但它不起作用.
<!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" xml:lang="en" lang="en">
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script src="http://api.wipmania.com/jsonp?callback.js"></script>
<script type="text/javascript">
switch(country_code()){
case "IN" :
document.location.href = "http://xxxxxxxx.biz/theme.php";
break;
}
</script>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
</html>
Run Code Online (Sandbox Code Playgroud)
我想检测用户的国家/地区并适当地重定向它们.
我计划使用JSONP调用外部Web服务来解决这个事实,即我不想创建一个可能与调用页面冲突的全局函数.我认为创建一个随机函数名称并将其传递起来会起作用.像这样的东西:
<script src="www.foo.com/b?cb=d357534">
Run Code Online (Sandbox Code Playgroud)
其中cb是回调函数名称,服务器将返回
d357534({my json data});
Run Code Online (Sandbox Code Playgroud)
我想知道的是如何创建随机函数名称,我确定我可以使用,eval但这是最好的方法吗?
基本上,我想要做的是这样的:
var d + Math.floor(Math.random()*1000001) = function(){...
Run Code Online (Sandbox Code Playgroud) javascript json jsonp unobtrusive-javascript javascript-events
需要一些建议我在客户端JSON解析期间做错了什么...提示和评论欢迎我的代码什么都不返回.调试器也没有显示任何有用的东西.
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var htmlString = "test";
$.getJSON("http://search.twitter.com/search.json?callback=functionName&q=%23csharp", functionName);
function functionName(data) {
$.each(data.items, function(i,item){
htmlString += item.content + "<br>";
});
$('#test').html(htmlString);
}
});
</script>
</head>
<body>
<div id="test"></div>
Run Code Online (Sandbox Code Playgroud)
可能重复:
JQuery不会得到json?
<script type="text/javascript">
var url = "http://local.yahooapis.com/LocalSearchService/V3/localSearch?appid=YahooDemo&query=pizza&zip=10504&results=2&output=json&callback=?";
jQuery.getJSON(url, function (data) {
alert(data);
});
var url1 = "http://services.odata.org/OData/OData.svc/Products?$format=json&callback=?";
jQuery.getJSON(url1, function (data) {
alert(data);
});
</script>
Run Code Online (Sandbox Code Playgroud)
通过运行上面的代码,我可以看到第一个警报,但不是第二个.有人能让我知道这里的错误吗?我收到的错误是FF中的"无效标签"和预期; 在IE 8中
def list
@rings = Ring.order("RAND()")
#JSON RENDERING
render :json => @rings.to_json(:include => [:variations, :stones]), :callback => params[:callback]
end
def show
@showring = Ring.includes(:stones, :variations).find(params[:id])
@other_rings = Ring.select([:id, :stone_count]).where(:style_number => @showring.style_number).reject{ |ring| ring == @showring}
#JSON RENDERING
render :json => {@showring.to_json(:include =>[:variations, :stones]), :other_rings => @other_rings}, :callback => params[:callback]
end
Run Code Online (Sandbox Code Playgroud)
我的列表视图渲染工作正常,但是当我想要显示视图时,有两个对象,并且使用包括showring将无法呈现正确的JSON.它用包含引用对象中的所有内容......
JSON输出如下所示:
showring =>"{"available":"yes","eng ... 9","stone_y":"149.4"}]}"
other_rings =>正确渲染的对象
单独注意,如果我已经将包含添加到@rings对象,为什么我再次必须在"to_json"方法中添加关联?
可能重复:
Ajax跨域调用
我有Asp.Net控制器方法返回JSON响应.但是我无法使用Jquery从其他域调用它$.getJSON(...){}
快速谷歌搜索表明必须使用JSONP.问题是JSON和JSONP有什么区别?这只是另一个新名词吗?如果JSONP正在工作,为什么我不能让JSON工作?有没有办法不使用这些花哨的JSONP并使用普通的旧JSON,因为我害怕我的服务器端代码的任何更改.
我正在尝试访问此JSON提要以获取Feed中的最后一项,这是当前在广播电台上播放的歌曲,因此我可以将其推送到流媒体播放器网络应用:
function getSongData(){
$.ajax({
url: 'http://cjzn.streamon.fm/metadata/recentevents/CJZN-48k.json',
dataType: 'jsonp',
success: function(data) {
var totalItems = data.length;
alert('Current song: ' + data[totalItems].TIT2);
},
error: function() {
alert('Unable to retrieve data');
}
});
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我正在使用data.length检索项目总数,这意味着该数字也是Feed中的最后一项.我能得到的只是错误信息!我知道我需要使用JSONP将数据传输到我的域,但老实说我不知道JSONP是否受支持这可能是罪魁祸首.如果是这样,我怎样才能获得Feed数据?
我正在使用jQuery的$ .ajax向不同域上的服务器进行Web服务调用,这是我无法控制的.不幸的是,服务器使用JSON而不是JSONP进行响应.所以Unexpected Token :当我的回调试图执行JSON而没有回调"填充"它时,我得到错误(JSON本身不是有效的Javascript).
我想知道是否有办法使用$ .ajax来发出跨域GET请求并忽略响应.我真的只需要在这里进行单向沟通.
代码段:
$.ajax(
{
url: 'http://service.somedomainidontcontrol.com',
method: 'GET',
dataType: 'jsonp',
success: function(){
e_log("Success");
},
data: my_data
}
);
Run Code Online (Sandbox Code Playgroud)
服务器响应(我想忽略):
{"status":"success"}
Run Code Online (Sandbox Code Playgroud)
在我看来,我可能会将一个iFrame附加到DOM来实现这一点,但我真的想要一个更清洁的解决方案.此外,我宁愿不依赖其他服务器来代理请求.
我从webservice查询(_urlTowns)获得以下json数据(见下文).我想将一个Kendo UI下拉列表控件绑定到此datasourceTowns.
{
"displayFieldName": "TNONAM",
"fieldAliases": {
"TNONAM": "TNONAM"
},
"fields": [{
"name": "TNONAM",
"type": "esriFieldTypeString",
"alias": "TNONAM",
"length": 16
}],
"features": [{
"attributes": {
"TNONAM": "ANSONIA"
}
}, {
"attributes": {
"TNONAM": "BETHANY"
}
}, {
"attributes": {
"TNONAM": "BRANFORD"
}
}, {
"attributes": {
"TNONAM": "WOODBRIDGE"
}
}]}
// Towns data source
var dataSourceTowns = new kendo.data.DataSource({
transport: {
read: {
url: _urlTowns,
dataType: "json",
type: 'GET'
}
},
schema: {
data: "features"
}});dataSourceTowns.read();
Run Code Online (Sandbox Code Playgroud)
我需要设置模型属性吗?正在我用"TNONAM"中的dataTextValue填充DDL之后.猜猜我混淆了"功能"和"属性".
如果服务器没有响应JSONP,我该如何处理?我已尝试使用$ .ajax的几个选项,但无法使其工作.
//var url = 'https://coinbase.com/api/v1/currencies/exchange_rates';
var url = 'http://blockchain.info/ticker';
$.ajax({
type: 'GET',
url: url,
//jsonpCallback: 'jsonCallback',
contentType: 'application/json',
//async: false,
//dataType: 'jsonp',
//xhrFields: {
// for CORS?
// withCredentials: false
//},
success: function (json) {
debugger;
},
error: function (json) {
debugger;
}
});
Run Code Online (Sandbox Code Playgroud) jsonp ×10
json ×6
jquery ×5
javascript ×4
ajax ×3
activerecord ×1
asp.net ×1
cors ×1
html ×1
kendo-ui ×1