小时? 发表于 2017-4-1 11:37:16

php和ajax的简单实现

步骤一、新建文件夹: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;

    }

    /**
   * 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');
      elsereturn '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>
页: [1]
查看完整版本: php和ajax的简单实现