Javascript Ajax:
<script type="text/javascript" src="http://www.MyFirstDomain.com/jquery.js"></script>
<script type="text/javascript">
$(document).ready( function () {
var referrer = document.referrer;
var currentpage = $(location).attr('href');
var data_object = {
'ref': referrer,
'curpg': currentpage,
'shizz1e': '21'
};
$.ajax({
'dataType': 'jsonp',
'jsonp': 'jsonp_callback',
'url': "http://www.myOtherDomain.com/ajaxreceiver.php",
'data': data_object
});
});
PHP:
<?php
$data = getDataAsJSON($_GET['curpg']);
echo $data;
?>
我试图将一些变量从一台服务器上的Javascript发送到另一台服务器的PHP。我使用Ajax和JSONP(围绕同源策略工作)。我曾经尝试理解JSONP的网站说过,使用getDataAsJSON()来获取PHP中的JSON,但这显然不是一个真正的函数。我做错了吗?
在PHP中,您可以使用json_decode。
PHP没有名为getDataAsJSON的函数。THat可能是某人编写的自定义函数。
函数json_decode创建json字符串的一个对象。所以你将无法回显它,因为它会给你一个错误。您可以使用print_r($data)来获取对象的值
getDataAsJSON
不存在。但是,您可以加载这样的JSON文件:
json_decode(file_get_contents($url));
您可能希望将json_decode
的第二个参数(将对象转换为关联数组)设置为true,这样您就可以像访问数组一样访问解码的对象。
json_decode()
返回一个具有属性的新STDClass对象。失败时为NULL。
json_encode()
返回一个包含这些json属性的字符串。
此外,您应该检查函数是否返回了有效的json对象/字符串或NULL。所以,使用一些基本的验证对你来说是件好事。
我更喜欢使用var_dump()
来跟踪对象。
//define getDataAsJson():
function getDataAsJson($param) {
$ary = array(
"symbol" => $param || 'IBM',
"price" => "199.0"
);
return json_encode($ary);
}