我面临着同源政策问题,并且通过研究该主题,我发现对我的特定项目而言,最好的方法是使用JSONP进行跨域请求。
我一直在阅读[IBM的有关JSONP的这篇文章,但是我对所发生的事情并不十分了解。
我在这里只需要一个简单的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请求,例如,我在这里的tweet滑块
如果查看源代码,可以看到我正在使用.getJSON调用Twitter API。
因此,您的示例将是:这是经过测试和工作的(您可以访问来查看实际运行情况)
//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