我正在开发基于REST的界面,人们可以在其中获取json文件.客户端需要从另一个域访问该文件.我使用到目前为止工作的jsonp.我的问题是Grails中的渲染.目前我使用'as JSON'来编组对象:
render "${params.jsoncallback}(${user as JSON})"
Run Code Online (Sandbox Code Playgroud)
进入客户端的Json文件包含所有属性,包括id和class,我不想在那里.如果它不是jsonp,我这样做,这很好用:
render(contentType:'text/json'){
userName user.userName
userImage user.userImage
:
:
}
Run Code Online (Sandbox Code Playgroud)
那么在将"user as JSON"渲染时,如何从json中获取id和class属性?任何的想法?
最好的问候,克拉斯
当我提醒它返回这样的字符串:
data "<?xml version="1.0" encoding="utf-8" ?>
<xml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<Name>John Smith</Name>
<Description>stackoverflow</Description>
<Total>50</Total>
</Document>
</xml>"
Run Code Online (Sandbox Code Playgroud)
更新:
我尝试使用此方法getJSON,我确实收到警报但从未在内部执行find('Document').each.....
$.getJSON(_url, function (data) {
alert(data);
$(data).find('Document').each(function () {
debugger
var name = $(this).find('Name');
var desc = $(this).find('Description').text();
var total = $(this).find('Total').text()
});
});
Run Code Online (Sandbox Code Playgroud)
如何在jquery中读取xml文件,下面是将我作为字符串返回的内容,我可以看到当我做警报(数据)时;
$.getJSON(url, {},
function (data) {
alert(data);
}
});
<?xml version="1.0" encoding="utf-8" ?>
- <xml xmlns="http://www.opengis.net/kml/2.2">
- <Document>
<Name>John Smith</Name>
<Description>stackoverflow</Description>
<Total>50</Total>
</Document>
</xml>
Run Code Online (Sandbox Code Playgroud) 嘿,我正在向AJAX调用"flickr.interestingness.getList"来获取有趣的图片,这是我的AJAX调用.
function getPhoto()
{
$.ajax("http://api.flickr.com/services/rest/?method=flickr.interestingness.getList&format=json&api_key=fbfe07eb3cc28814df5bbc0313cdd521",
{
dataType: "jsonp",
//jsonp: false, jsonFlickrApi: "jsonpcallback",
jsonpCallback: "jsonFlickrApi",
});
}
function jsonFlickrApi(data)
{
alert(data.photos.photo);
}
Run Code Online (Sandbox Code Playgroud)
这里的"JsonFlickrApi"是来自Flickr的预定义函数,它包装了包含一堆照片的json对象.我的问题是,我可以以某种方式覆盖预定义的函数,"jsonFlickApi"并将回调函数命名为"jsonFlickrApi"之外的其他东西,我认为jsonp参数应该在我阅读jQuery文档但未能更改它之后执行此操作.或者我不太明白jsonp参数在jQuery AJAX调用中的作用.谢谢
"category": [{
"id": 28,
"name": "Dogs"
},
{
"id": 14,
"name": "Cats"
},
{
"id": 878,
"name": "Sheep"
}],
Run Code Online (Sandbox Code Playgroud)
我解析了上面的JSON(使用.ajax和jsonp作为回调),我想将"name"的所有值加入到字符串中.即"狗,猫,羊".我怎样才能做到这一点?我尝试过简单加入"类别"和名称,即
var cats = categories.join(", ");
Run Code Online (Sandbox Code Playgroud)
要么
var cats = categories.name.join(", ");
Run Code Online (Sandbox Code Playgroud)
但是既然我们正在查看它的成员及其字符串值,它就不起作用了.
简单的问题,如果我有这样的静态文件(使用mockJSON web生成JSON)
http://www.webwrx.sk/clients/data.json.txt
我需要用这个文件把它改成JSONP吗?我需要以某种方式修改它吗?文件如api.flickr.com有什么不同?
我甚至在该文件中添加了():
http://www.webwrx.sk/clients/data2.json.txt
仍然下面的代码不会工作:
var params = _.extend({
'method': 'GET',
'url': this.url,
'cache': true,
'dataType': 'jsonp',
processData: true
}, options);
return $.ajax(params);
Run Code Online (Sandbox Code Playgroud)
感谢您的任何帮助.
浏览器将JSONP请求发送到Laravel,Laravel将结果返回给浏览器.在浏览器控制台中,我收到警告:
Resource interpreted as Script but transferred with MIME type text/html:
Run Code Online (Sandbox Code Playgroud)
我认为这是由于JSONP响应中的标题不正确?该警告应该如何解决?
PHP
$callback = Input::get('callback');
$result = DB::table('users')->find(123);
return $callback . '(' . json_encode($result) . ')';
Run Code Online (Sandbox Code Playgroud)
Response::JSON($result) 将返回我认为通常的JSON响应,而不是JSONP变体,其中回调函数名称包裹在有效负载周围.
我正在研究JSONP回调函数的概念.我阅读了一些有关这方面的文章,并希望能够很好地掌握JSONP的概念.
所以,我将一个json文件上传到服务器--json文件
这是我编写的用于检索数据的js代码.电话是从localhost到abhishekprakash.com.
var xhr;
var dataList;
xhr = new XMLHttpRequest();
xhr.open('GET', 'http://abhishekprakash.com/script/example.json?callback=func_callbk', true);
xhr.send();
func_callback = function(data){
alert(data.data.people[0].id);
}
xhr.onreadystatechange = function(){
if(xhr.readyState == 4){
console.log(dataList);
}
};
Run Code Online (Sandbox Code Playgroud)
这是我在控制台中得到的响应:

调用回调函数但它不包含Json数据.我错过了什么?
任何帮助表示赞赏.
谢谢
我正在开发一个在Go中接受JSONP请求的API.我可以将一个结构序列化为JSON并返回它,但是将JSON包装在padding或回调函数中有点尴尬,因为参数Write()需要是一个字节切片:
callback := req.FormValue("callback")
// ...
jsonBytes, _ := json.Marshal(resp)
if callback != "" {
jsonStr := callback + "(" + string(jsonBytes) + ")"
jsonBytes = []byte(jsonStr)
}
responseWriter.Write(jsonBytes)
Run Code Online (Sandbox Code Playgroud)
我想我会在一些函数中封装它.大多数情况下,我发现字符串/ []字节转换很时髦.有一个更好的方法吗?
我在过去几天一直在检查AngularJS,但我遇到了一个问题.我试图用来$http.jsonp从Soundcloud API获取信息....但在我看来,$ http没有定义$scope.这是控制台告诉我的内容:
Uncaught ReferenceError: $http is not defined main.js:18
(anonymous function) main.js:18
(anonymous function) sdk.js:1
window.SC.SC.Helper.merge.Dialog.AbstractDialog.AbstractDialog.handleReturn sdk.js:1
window.SC.SC.Helper.merge.Dialog._handleDialogReturn sdk.js:1
window.SC.SC.Helper.merge.connectCallback
Run Code Online (Sandbox Code Playgroud)
这是我打电话的地方 main.js
angular.module('soundSelectahApp')
.controller('MainCtrl', function ($scope) {
$scope.apiKey = "#############################";
$scope.results = [];
$scope.init = function(){
SC.initialize({
client_id: $scope.apiKey,
redirect_uri: "http://localhost:9000/callback.html"
});
// initiate auth popup
SC.connect(function() {
SC.get('/me', function(me) {
alert('Hello, ' + me.username);
});
$http.jsonp('https://api.soundcloud.com/me.json?client_id=' + $scope.apiKey + '&callback=JSON_CALLBACK').success(function(data) {
console.log(data);
}).error(function(error) {
console.log(error);
});
});
};
});
Run Code Online (Sandbox Code Playgroud)
我忽略了什么吗?我不应该$http.jsonp()在我身上使用$scope.init()吗?这是否意味着我在外面 …
我想请求一个远程XML文件.我已经阅读过JSONP是在不编写服务器端代码的情况下完成此任务的唯一方法.我试图使用以下代码请求XML文件
<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script>
$(document).ready(function(){
$.ajax({
url: 'http://www.w3schools.com/xml/note.xml',
dataType: 'jsonp',
success: function(dataWeGotViaJsonp){
console.log(dataWeGotViaJsonp);
}
});
})
</script>
</head>
<body>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我收到错误:
资源解释为脚本但使用MIME类型text/xml传输:" http://www.w3schools.com/xml/note.xml?callback=jQuery1620008313672617077827_1390902958529&_139902958534 ".jquery.min.js:18 Uncaught SyntaxError:意外的令牌<
任何帮助非常感谢.