我面临着同源策略问题,通过研究该主题,我发现对于我的特定项目来说,最好的方法是使用 JSONP 来执行跨源请求。
我一直在读IBM 的这篇关于 JSONP 的文章 http://www.ibm.com/developerworks/library/wa-aj-jsonp1/,但是我并不是 100% 清楚发生了什么。
我在这里要求的只是一个简单的 jQuery>PHP JSONP 请求(或者任何术语;)) - 像这样(显然这是不正确的,它只是让你可以了解我想要实现的目标:)):
jQuery:
$.post('http://MySite.com/MyHandler.php',{firstname:'Jeff'},function(res){
alert('Your name is '+res);
});
PHP:
<?php
$fname = $_POST['firstname'];
if($fname=='Jeff')
{
echo 'Jeff Hansen';
}
?>
我该如何将其转换为正确的 JSONP 请求?如果我将 HTML 存储在要返回的结果中,这也可以吗?
当您在外部域上使用 $.getJSON 时,它会自动执行 JSONP 请求,例如我的此处推文滑块 http://smallcoders.com/2011/06/development-environment/freebies/tweet-slider-v2-2-now-a-lightweight-jquery-plugin/
如果您查看源代码,您会发现我正在使用 .getJSON 调用 Twitter API。
所以你的例子是:
这是经过测试并且有效的(您可以访问http://smallcoders.com/javascriptdevenvironment.html http://smallcoders.com/javascriptdevenvironment.html看看它的实际效果)
//JAVASCRIPT
$.getJSON('http://www.write-about-property.com/jsonp.php?callback=?','firstname=Jeff',function(res){
alert('Your name is '+res.fullname);
});
//SERVER SIDE
<?php
$fname = $_GET['firstname'];
if($fname=='Jeff')
{
//header("Content-Type: application/json");
echo $_GET['callback'] . '(' . "{'fullname' : 'Jeff Hansen'}" . ')';
}
?>
请注意?callback=?和 +res.fullname
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)