是否可以将数据发布到JSONP?或者所有数据都必须作为GET请求在查询字符串中传递?任何示例代码.
谢谢
我有以下代码,试图让谷歌的URL缩短工作.
$.ajax({
type: 'POST',
url: "https://www.googleapis.com/urlshortener/v1/url?key=AIzaSyDQ33gAu7thkpw_oW9VTcxR6YGhimcfik",
contentType: 'application/json',
data: '{ longUrl: "' + match +'"}',
dataType: 'jsonp',
success: function(id){
$('#menu').html(id);
}
});
Run Code Online (Sandbox Code Playgroud)
这里的问题是,当数据类型只是json时,会发出请求,但不会返回任何内容.当它改为jsonp时,一切都没有发生.有任何想法吗?
我知道我可以使用jquery,.ajax和jsonp进行跨域调用ajax.我打电话给雅虎股票报价api.一切正常,结果又回来了(我可以看到使用Fiddler.)问题是我得到一个js错误YAHOO未定义.我认为它有问题,因为JSON是在回调函数中形成的,因此它的json语法不正确.我该怎么办才能修复它?谢谢!这是代码:
$.ajax({
type: 'GET',
dataType: 'jsonp',
jsonp: 'callback',
jsonpCallback: 'YAHOO.Finance.SymbolSuggest.ssCallback',
data:{
query: request.term
},
url: 'http://autoc.finance.yahoo.com/autoc',
success: function (data) {
alert("yes");
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
}
});
Run Code Online (Sandbox Code Playgroud) 我一直在研究展示跨域脚本的各种示例,并遇到了我想使用jQuery.support.cors = true以及Ajax调用从Web服务检索数据的情况.我有一个使用jsonp工作的webservice的例子,我认为添加jQuery.support.cors = true很简单,将dataType更改为"json",并删除&$ callback =?来自网址.我可以看到Web服务(Netflix)带有预期数据的响应,但是当ajax调用返回时,它执行错误函数而不是成功.
我原本以为webservice可能没有合适的cors头,但我倾向于认为收到的格式化响应等同于现有的头.也许我没有正确格式化成功/错误函数,而Ajax结果不喜欢这样.
这是试图使用jQuery.support.cors无济于事的小提琴.
我想知道使用以下JSONP响应语法的原因是什么:
在URL下:https://ect.channel.facebook.com/probe?mode = stream&format = json
有:
for (;;); {"t":"heartbeat"}
{"t":"heartbeat"}
{"t":"continue","seq":0}
Run Code Online (Sandbox Code Playgroud)
我的问题是,for(;;);这个JSONP响应究竟做了什么.它是如何解析的?
我正在从jsonp调用中获取json数据。数据恢复正常。一个数据元素采用字符串形式,其中包含一些html(“ p”标记,“ a”标记)。我正在尝试在jQuery对话框中输出此元素(图片描述)。由于某种原因,无论是否使用$ .parseHTML,我都无法将其呈现为html。
程式码片段:
var image = data.image;
var title = data.title;
var id = data.id;
var description = $.parseHTML( data.description );
var media = data.media;
var secret = data.secret;
if(media == "photo"){
var string = "<div id=\"picturebox\" class=\"picturebox\">\n";
string += " <img src=\""+image + "\" id=\"photo_"+id+"\" />\n";
string += " <h2>" + title + "</h2>\n";
string += " <p>" + description + "</p>\n";
string += "</div>\n";
$('#gbFullPic').html(string);
}
Run Code Online (Sandbox Code Playgroud)
尽管动态生成的div正确显示,包括图像和标题,但“描述”行输出如下:[object Text]
如果删除$ .parseHTML,输出将如下所示:
Bird of paradise growing in south …Run Code Online (Sandbox Code Playgroud) 我是AngularJS的相对新手,并成功使用$ http的GET方法作为基本的概念验证应用程序,我现在正尝试使用JSONP方法从远程URL中提取一些JSON我是得到了.我在这里创建了一个基本的plunker来展示我想要做的事情:http://plnkr.co/edit/Joud0ukAzhgvNM0h9KjB?p = preview
我在我的控制器中使用HTTP请求,如下所示:
$http({method: 'jsonp', url: 'http://ec2-54-229-49-250.eu-west-1.compute.amazonaws.com/country?callback=JSON_CALLBACK'}).
success(function(data) {
$scope.countries = data;
console.log('success');
}).
error(function(data) {
console.log('error');
});
Run Code Online (Sandbox Code Playgroud)
...但是我什么都没有回来(除了控制台中的"错误").我知道URL返回有效的JSON(http://ec2-54-229-49-250.eu-west-1.compute.amazonaws.com/country?callback=angular.callbacks._0),但我是只是没有得到任何回报......
一直试图创建一个简单的JSONP调用,但它并不总是有效,我不知道为什么.这是代码:
server-side(http://server/server.php):
<?php
$res = json_encode("It works!");
if(isset($_GET['callback']) === TRUE) {
header('Content-Type: text/javascript;');
header('Access-Control-Allow-Origin: http://client');
header('Access-Control-Max-Age: 3628800');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE');
echo $_GET['callback']."(".$res.");";
} else {
echo $res;
}
?>
Run Code Online (Sandbox Code Playgroud)
客户端(http://client/client.html):
<html>
<head><title>JSONP</title></head>
<body>
<h1>JSONP Experiment</h1>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
function process(data) {
$('#result').text(data);
}
$.getJSON(
'http://server/server.php?callback=?',
{'callback': 'process'}
);
</script>
<p id="result"></p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
此代码工作并显示"它工作!" 在我的
块.
当我不使用{'callback': 'process'}并将?callback = process直接放入$ .getJSON()URL 时,为什么它不起作用?
如果我使用<script src="http://server/server.php?callback=process"></script>而不是$ .getJSON()调用,为什么它不起作用?
两个非工作案例实际上都会返回,process("It works");但这不会被执行,为什么?
谢谢
我想从domain2(example2.com)访问domain1(example.com)中的JSON文件.例如,
$.ajax({
type:'get',
url: 'http://example.com/vigneshmoha.json',
success: function(data) {
console.log(data);
},
statusCode: {
404: function() {
console.log('Status code: 404');
}
}
});
Run Code Online (Sandbox Code Playgroud)
我想从其他域(即)example2.com向example.com发出此ajax请求.
我试过JSONP.我无法理解它是如何工作的.有人可以解释一下它的工作方式吗?
我正在使用JSONP进行api跨域请求,外部服务器以XML格式返回结果,下面是我的代码:
$.ajax({
type: "Get",
url: "http://domain.com/function?Data=1234567890",
xhrFields: {withCredentials: true},
dataType: "JSONP text xml",
contentType: "application/xml",
cache: false,
success: function(xml)
{
alert($(this).find('ResponseStatus').text());
}
});
Run Code Online (Sandbox Code Playgroud)
它返回给我一个xml,但随之而来的是它会产生一个错误,说"Unexpected token <",它不幸地停止了我的处理,我没有收到警告信息.任何的想法?
最好