php和ajax的简单实现
程序员文章站
2022-04-24 11:45:09
...
步骤一、新建文件夹:js,把最新的jquery.js放里边。
步骤二、新建文件mygetjson.php,其内容为
<?php
class custom_json {
/**
* Convert array to javascript object/array
* @param array $array the array
* @return string
*/
public static function encode($array)
{
// determine type
if(is_numeric(key($array))) {
// indexed (list)
$output = '[';
for($i = 0, $last = (sizeof($array) - 1); isset($array[$i]); ++$i) {
if(is_array($array[$i])) $output .= self::encode($array[$i]);
else $output .= self::_val($array[$i]);
if($i !== $last) $output .= ',';
}
$output .= ']';
} else {
// associative (object)
$output = '{';
$last = sizeof($array) - 1;
$i = 0;
foreach($array as $key => $value) {
$output .= '"'.$key.'":';
if(is_array($value)) $output .= self::encode($value);
else $output .= self::_val($value);
if($i !== $last) $output .= ',';
++$i;
}
$output .= '}';
}
// return
return $output;
}
/**
* [INTERNAL] Format value
* @param mixed $val the value
* @return string
*/
private static function _val($val)
{
if(is_string($val)) return '"'.rawurlencode($val).'"';
elseif(is_int($val)) return sprintf('%d', $val);
elseif(is_float($val)) return sprintf('%F', $val);
elseif(is_bool($val)) return ($val ? 'true' : 'false');
else return 'null';
}
}
// prints: ** try it yourself, cannot post long lines here **
$big_test = array(
array(
'name' => array('John', 'Smith'),
'age' => 27,
'sex' => 0,
'height' => 180.53,
'is_human' => true,
'string' => 'Hello',
),
array(
'name' => array('Green', 'Alien'),
'age' => 642,
'sex' => null,
'height' => 92.21,
'is_human' => false,
'string' => 'こんにちは!', // test utf8 here
)
);
//echo custom_json::encode($big_test);//这个用于测试其是否返回的是json数据
echo $_GET['jsoncallback'].'('.custom_json::encode($big_test).')';//用一个回调返回
?>
步骤三、新建测试页面test.html,其内容为
<html>
<head>
<title>Page Title</title>
<meta charset="utf-8">
<script type="text/javascript" src="js/jquery-1.6.3.min.js"></script>
<script type="text/javascript">
$(function(){
$('#btn').click(function(){
$.getJSON('json.php?jsoncallback=?',myfunction);
function myfunction(data)
{
var infoHtml = '';
$.each(data,function(contact,contactinfo)
{
// alert(contactinfo.name);
infoHtml+='<p>name:'+contactinfo.name+'</p>';
$('#info').html(infoHtml);
});
}
});
});
</script>
</head>
<body>
<input type="button" id="btn1" value="提交1">
<form id="form1" action="">
<input type="button" id="btn" value="提交">
</form>
<div id="info"></div>
</body>
</html>
步骤二、新建文件mygetjson.php,其内容为
<?php
class custom_json {
/**
* Convert array to javascript object/array
* @param array $array the array
* @return string
*/
public static function encode($array)
{
// determine type
if(is_numeric(key($array))) {
// indexed (list)
$output = '[';
for($i = 0, $last = (sizeof($array) - 1); isset($array[$i]); ++$i) {
if(is_array($array[$i])) $output .= self::encode($array[$i]);
else $output .= self::_val($array[$i]);
if($i !== $last) $output .= ',';
}
$output .= ']';
} else {
// associative (object)
$output = '{';
$last = sizeof($array) - 1;
$i = 0;
foreach($array as $key => $value) {
$output .= '"'.$key.'":';
if(is_array($value)) $output .= self::encode($value);
else $output .= self::_val($value);
if($i !== $last) $output .= ',';
++$i;
}
$output .= '}';
}
// return
return $output;
}
/**
* [INTERNAL] Format value
* @param mixed $val the value
* @return string
*/
private static function _val($val)
{
if(is_string($val)) return '"'.rawurlencode($val).'"';
elseif(is_int($val)) return sprintf('%d', $val);
elseif(is_float($val)) return sprintf('%F', $val);
elseif(is_bool($val)) return ($val ? 'true' : 'false');
else return 'null';
}
}
// prints: ** try it yourself, cannot post long lines here **
$big_test = array(
array(
'name' => array('John', 'Smith'),
'age' => 27,
'sex' => 0,
'height' => 180.53,
'is_human' => true,
'string' => 'Hello',
),
array(
'name' => array('Green', 'Alien'),
'age' => 642,
'sex' => null,
'height' => 92.21,
'is_human' => false,
'string' => 'こんにちは!', // test utf8 here
)
);
//echo custom_json::encode($big_test);//这个用于测试其是否返回的是json数据
echo $_GET['jsoncallback'].'('.custom_json::encode($big_test).')';//用一个回调返回
?>
步骤三、新建测试页面test.html,其内容为
<html>
<head>
<title>Page Title</title>
<meta charset="utf-8">
<script type="text/javascript" src="js/jquery-1.6.3.min.js"></script>
<script type="text/javascript">
$(function(){
$('#btn').click(function(){
$.getJSON('json.php?jsoncallback=?',myfunction);
function myfunction(data)
{
var infoHtml = '';
$.each(data,function(contact,contactinfo)
{
// alert(contactinfo.name);
infoHtml+='<p>name:'+contactinfo.name+'</p>';
$('#info').html(infoHtml);
});
}
});
});
</script>
</head>
<body>
<input type="button" id="btn1" value="提交1">
<form id="form1" action="">
<input type="button" id="btn" value="提交">
</form>
<div id="info"></div>
</body>
</html>
上一篇: velocity第二个应用例子—访问对象
下一篇: nginx和IIS的均衡负载