PHP + Ajax示例

2016-08-26 Jamling 更多博文 » 博客 » GitHub »

PHP Ajax

原文链接 https://jamling.github.io/2016/08/26/PHP-php-ajax/
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。


PHP是非常流行的Web服务端语言,Ajax是Web前端异步加载的技术。刚刚学习PHP,发现PHP真是强大,对Ajax或RESTFul的支持非常好,代码写起来也非常简单。今天分享一个个人学习的测试示例,前端使用Ajax向服务端发送请求,服务端使用PHP处理请求,并返回响应信息。接口规范遵循RESTFul。

前端

为简化Ajax操作,引入JQuery来发送Ajax请求。请求包含查询字符串,HTTP头及表单数据。

```html test.html <!doctype html> Document

function my_post() { var div = $('#result'); $.ajax({ url : 'test.php?urlvar1=var1&urlvar2=var2', dataType : "json", type : 'post', headers: { hvar : 'hvar' }, data : { foo : 'bar', postvar: [{var1: 'var1', var2: 'var2'}, {var1: 'var10', var2: 'var20'}] }, success : function(data) { if (data.code==0) { div.html(JSON.stringify(data)); } }, error: function (xhr, msg, e) {console.log(e); div.html('加载失败'); } }); }

发射


请求数据如下图所示:

{% asset_img request.png %}

其实请求还包含一个hvar的HTTP请求头,HTTP头通常用于设置授权,加密等接口参数。业务参数一般放在url或表单数据中。如果请求方式为get,那么表单数据会作为查询字符串追加到url中。


## 后端

提交请求后,由后端的test.php来处理请求。只简单地将收到的请求Headers,GET参数及POST参数封装成json并返回。

```php test.php
<?php

$data = $_POST['postvar'];
$headers = getallheaders();
foreach ($headers as $key => $value) {
  //echo $key . "=" . $value;
}

header('content-type:application/json;charset=utf8');

$ret = array(
  'code' => 0,
  'headers' => $headers,
  'gets' => $_GET,
  'posts' => $_POST
);
exit(json_encode($ret));
?>

接口传过来的json对象,直接会被PHP解析为关联数据。比如$data就是一个array。

响应结果如下图所示:

{% asset_img response.png %}

其中headers包含一个hvar的参数。PHP转json由内置函数json_encode()来完成。

运行结果

{% asset_img result.png %}

总结

PHP真是强大,关联数据与json在结构上非常相似,处理json也非常的方便。如果是Java,后端代码写起来就复杂许多了,json处理还得引入第三方库。