JSONP请求PHP页面不工作(跨域)
JSONP request to PHP page not working (cross domain)
这是我的PHP页面(在不同的URL上)…
<?php
header('Content-Type: application/json');
?>
stat({"online":1});
这是我的jQuery:
$(document).ready(function(){
var url = 'http://blah.com/jsontest.php?callback=stat';
$.getJSON(url, function(data) {
if (data.online !== undefined) {
console.log('yay');
}
}).error(function() {
console.log('no');
});
});
由于某些原因,它总是记录'no',即它正在运行错误函数。
使用jQuery 1.5.2有什么想法吗?
首先,JSON- p不是JSON。内容类型为application/javascript
。有些浏览器可能会因为不安全而拒绝JSON- p作为JSON。
第二,getJSON期望你请求的URL有一个?
作为回调方法名(你需要让你的PHP注意$_GET['callback']
)。
第三,如果修复不工作,看看网络标签在Firebug/Chrome调试器/蜻蜓/等,看看什么数据实际上是通过电线。
包含一个"回调"函数有一些恶作剧。显然,您返回的不是对象,而是在原始客户机请求中提交的函数。我只是模糊地理解了这一切的含义,然而,我确实有一些代码来完成这个工作:
服务器端:<?php
$headers = get_headers($toGetUrl,1);
$return["pop_singer"] = "Britney Spears";
// Right here is where the json object gets wrapped in a function that was submitted under the name "callback"
echo $_GET['callback']."(".json_encode($return).")";
?>
客户端(这与$.getJSON()相同):
$.ajax({
type: "GET",
url: serverUrl,
dataType: 'jsonp',
error: function(request, status) {
// Do some error stuff
},
success: function(data, textStatus, jqXHR) {
var property = data.pop_singer; // equals "Britney Spears"
// Do some successful stuff
}
});
相关文章:
- 由于响应中不存在“Access Control Allow Origin”标头,跨域请求停止工作
- Internet Explorer跨域请求无法正常工作,MS没有给出错误的理由
- 简单的跨域 iframe postMessage 在 jsfiddle 中工作,但在本地不起作用
- XSS 如何工作 - 尤其是当我们有跨域安全性时
- jrecorder无法跨域工作
- 这个跨域ajax请求是如何工作的
- HTML5 Web工作者是否可以/应该使用CORS进行跨域工作
- 跨域AJAX不工作PHP
- 如何获得SignalR集线器连接以跨域工作
- 如何DownForEveryoneOrJustMe.com和其他类似的网站工作与跨域脚本限制
- 跨域跟踪的形式不与._linkbypost工作
- 跨域GET请求不能在jQuery中工作,使用c#后端服务器
- 美元.getJSON不工作跨域与我
- 跨域Cookie不工作
- 我的回调不工作的json数据从跨域
- 播放音频不能在跨域iframe中工作
- 跨域Ajax请求不能在Opera和IE9中工作
- Javascript跨域PostMessage不工作
- JSON请求不工作:file:// URL不支持跨域请求
- JSONP请求PHP页面不工作(跨域)