PHP 与 js json的通信实例

 更新时间:2016年11月25日 15:52  点击:1940

选简介一下json吧,json(网页特效 object notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于javascript programming language, standard ecma-262 3rd edition - december 1999的一个子集。 json采用完全独立于语言的文本格式,但是也使用了类似于c语言家族的习惯(包括c, c++, c#, java, javascript, perl, python等)。这些特性使json成为理想的数据交换语言。

json建构于两种结构:


“名称/值”对的集合(a collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
值的有序列表(an ordered list of values)。在大部分语言中,它被理解为数组(array)。


php文件代码

<?php
$res['id'] = $_post['id'];
$res['name'] = "elar";
$res['age'] = "21";
$response = "hello this is response".$_post['id'];
echo json_encode($res);
?>

js代码

 

<script type="text/javascript">
function getjson() {
var xmlhttp;
try {
// firefox, opera 8.0+, safari
xmlhttp = new xmlhttprequest();
}
catch (e) {
// internet explorer
try {
xmlhttp = new activexobject("msxml2.xmlhttp");
}
catch (e) {

try {
xmlhttp = new activexobject("microsoft.xmlhttp");
}
catch (e) {
alert("您的浏览器不支持ajax!");
return false;
}
}
}

xmlhttp.onreadystatechange = function() {
if (xmlhttp.readystate == 4) {
//alert(xmlhttp.responsetext);
var str = xmlhttp.responsetext;
document.getelementbyid('show').innerhtml +=str;
//alert(str);
var obj = eval('('+ xmlhttp.responsetext +')');
//var obj = eval(({"id":"123","name":"elar","age":"21"}));
alert(obj.name);
}
}
var data = "id=123";
xmlhttp.open("post", "testjson.php", true);
xmlhttp.setrequestheader("content-type","application/x-www-form-urlencoded");
xmlhttp.send("id=123");
}
</script>
<input type="button" onclick="getjson()" value="按我!"/>
<hr />
<div id="show"></div>

warning: preg_match(): compilation failed: pcre does not support l, l, n, p, p, u, u, or x at offset 3 in f:wwwrootwww.111cn.nettest.php教程 on line 2

解决方法

preg_match("/^[x80-xff_a-za-z0-9]{3,15}",strname);

下面我们来看一款php正则中文实例

是用x表示十六进制数据的。于是,变换成如下的代码:

$str = "php编程";
if (preg_match("/^[x4e00-x9fa5]+$/",$str)) {
print("该字符串全部是中文");
} else {
print("该字符串不全部是中文");
}


提供一款js正则中文

var str = "www.111cn.net编程";
if (/^[u4e00-u9fa5]+$/.test(str)) {
alert("该字符串全部是中文");
}
else{
alert("该字符串不全部是中文");
}

匹配email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
匹配网址url的正则表达式:[a-za-z]+://[^s]*

下面看一实例

<body onload="f.a.select();">
<?php
echo 'a:'.htmlspecialchars($a);
echo '<br>a1:';
$a1 = eregi_replace('(^[_.][:alnum:]-]+@([[:alnum:]][[:alnum:]-]*.)+[[:alpha:]]{2,3}$)',' <a href="mailto:1">1</a> ', $a) ;
echo htmlspecialchars($a1);
echo "<br>a1:$a1";
echo '<br>a2:';
$a2 = eregi_replace('([[:alnum:]]+://([[:alnum:]][[:alnum:]-]*.)+[[:alpha:]]{2,3}([#?/][^#?/][:space:]][^[:space:]]*)?)',
   '<a href="1" target="_blank">1</a>', $a);
echo htmlspecialchars($a2);
echo "<br>a2:$a2";
// eregi('^[_.][:alnum:]-]+@([[:alnum:]][[:alnum:]-]*.)+[[:alpha:]]{2,3}$',$a) or die("not a email");
?>
<form name="f">
<input name="a" value="<?php echo $a; ?>">
<input type="submit" >
</form>
</body>


关于正则表达式常用数据

匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-za-z][a-za-z0-9_]{4,15}$

  评注:表单验证时很实用

  匹配国内电话号码:d{3}-d{8}|d{4}-d{7}

  字串1

  评注:匹配形式如 0511-4405222 或 021-87888822

  匹配腾讯qq号:[1-9][0-9]{4,}

  评注:腾讯qq号从10000开始

  匹配中国邮政编码:[1-9]d{5}(?!d)

  评注:中国邮政编码为6位数字

  匹配身份证:d{15}|d{18}

  评注:中国的身份证为15位或18位

  匹配ip地址:d+.d+.d+.d+

  评注:提取ip地址时有用

  匹配特定数字:

  ^[1-9]d*$    //匹配正整数

  ^-[1-9]d*$   //匹配负整数

  ^-?[1-9]d*$   //匹配整数

  ^[1-9]d*|0$  //匹配非负整数(正整数 + 0)

  ^-[1-9]d*|0$   //匹配非正整数(负整数 + 0)

  ^[1-9]d*.d*|0.d*[1-9]d*$   //匹配正浮点数

  ^-([1-9]d*.d*|0.d*[1-9]d*)$  //匹配负浮点数

  ^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$  //匹配浮点数

  ^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$   //匹配非负浮点数(正浮点数 + 0)

  ^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$  //匹配非正浮点数(负浮点数 + 0)

  评注:处理大量数据时有用,具体应用时注意修正

  匹配特定字符串:

  ^[a-za-z]+$  //匹配由26个英文字母组成的字符串 字串4

  ^[a-z]+$  //匹配由26个英文字母的大写组成的字符串

  ^[a-z]+$  //匹配由26个英文字母的小写组成的字符串

  ^[a-za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串

  ^w+$  //匹配由数字、26个英文字母或者下划线组成的字符串

方法很简单PHP字符串int是很容易,只要在变量前面加个(int)就成了,转换成字符也一样的哦。

$str = "10";  
$num = (int)$str;

//
 $str = "10";
 $num = (int)$str;
 if ($str === 10) echo "string";
 if ($num === 10) echo "integer";
 
 /*
 结果为
 integer
 */
 
 echo gettype($str); //string
 echo gettype($num); //integer
 

一款简单的php教程 mysql教程考试系统,实例方法是判断题目数组是否为空,为空则从题库中随机取出12道题 id

 

<?php
include './inc/header.php';
if($_session['arr'] == ''){                #判断题目数组是否为空,为空则从题库中随机取出12道题 id
        $sql = 'select * from an';
        $select = $db->select($sql);
        for($i=0;$i<count($select);$i++){
                $aid .= $select[$i]['id'].',';
        }
        $arr = explode(',',substr($aid,0,strlen($aid)-1));
        shuffle($arr);
        $_session['arr'] = array_slice($arr,0,12);
}
$array = $_session['arr'];
if($_server['request_method'] == "post"){
        if($_session['arr1'] == ""){                #arr1存的是已答题的id       
                $ary = $array;
                array_shift($ary);                                #每答完一道题后,删除数组第一位
                $_session['arr1'] = $ary;
        }else{
                $ary = $_session['arr1'];
                array_shift($ary);
                $_session['arr1'] = $ary;
        }
        $id = $_post['id'];
        $answer = $_post['answer'];
        $sqq = 'select * from an where id='.$id.' and answer="'.$answer.'"';
        $qus = mysql_query($sqq);
        $rows = @mysql_num_rows($qus);
        if($rows){
                $_session['right'] .= $id.',';                #将答对题id存到session['right']
                $rightarr = explode(',',substr($_session['right'],0,strlen($_session['right'])-1));                #判断对题数
                if(count($rightarr) < 10){                        #如果小于10则继续答下一题
                        $sql2 = 'select * from an where id='.$ary[0];
                        $sel = $db->select($sql2);
                }elseif(count($rightarr) == 10){                #如果等于10则跳出此次问答
                        $time = time();
                        $_session['jiang'] = md5($time);
                        #echo '<script>location.href="right.php?uid='.$time.'";</script>';
                        $success = array('second'=>'3','url'=>'right.php?uid='.$time,'title'=>'答对十题','right'=>'恭喜你,你已连续答对十道题,将跳转到兑奖页面。');
                        $smarty->assign('msg',$success);
                        $smarty->display('success.html');
                        exit();
                }
        }else{
                $_session['error'] .= $id.',';                #将答错题id存到session['error']
                $errorarr = explode(',',substr($_session['error'],0,strlen($_session['error'])-1));  #判断错题数
                if(count($errorarr) < 2){                       
                        $sql2 = 'select * from an where id='.$ary[0];
                        $sel = $db->select($sql2);
                }elseif(count($errorarr) == 2){                #如果答错两题,则重新计数
                        unset($_session['right']);
                        unset($_session['error']);
                        unset($_session['arr1']);
                        unset($_session['arr']);
                        unset($_session['num']);
                        session_destroy();
                        #echo '<script>location.href="index.php";</script>';
                        $success = array('second'=>'3','url'=>'index.php','title'=>'答错两题','error'=>'对不起,你已连续答错两题,将重新计算');
                        $smarty->assign('msg',$success);
                        $smarty->display('success.html');
                        exit();
                }
        }
        echo 'right:'.$_session['right'].'<br        />';
        echo 'error:'.$_session['error'].'<br        />';
}else{
        $sqll = 'select * from an where id='.$array[0];
        $sel = $db->select($sqll);
}
if(isset($_session['num'])){                        #目前答第几题
        $num = $_session['num'] + 1;
        $_session['num'] = $num;
        #echo $_session['num'].'<br        />';
        #echo $num;
}else{
        $num = 1;
        $_session['num'] = $num;
}
$smarty->assign('num',$num);
$smarty->assign('ob',$sel);
$smarty->display('index.html');

[!--infotagslink--]

相关文章

  • gin 获取post请求的json body操作

    这篇文章主要介绍了gin 获取post请求的json body操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-15
  • 详解Mysql中的JSON系列操作函数

    新版 Mysql 中加入了对 JSON Document 的支持,可以创建 JSON 类型的字段,并有一套函数支持对JSON的查询、修改等操作,下面就实际体验一下...2016-08-23
  • Json格式详解

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。JSON采用完全独立于语言的文本格式,这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成...2021-11-05
  • C#使用Http Post方式传递Json数据字符串调用Web Service

    这篇文章主要为大家详细介绍了C#使用Http Post方式传递Json数据字符串调用Web Service,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
  • js遍历json的key和value的实例

    下面小编就为大家带来一篇js遍历json的key和value的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2017-01-26
  • 详解.NET Core 3.0 里新的JSON API

    这篇文章主要介绍了详解.NET Core 3.0 里新的JSON API,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-09-22
  • ASP.NET Core根据环境变量支持多个 appsettings.json配置文件

    这篇文章主要介绍了ASP.NET Core根据环境变量支持多个 appsettings.json配置文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-09-22
  • 基于Vue+Openlayer实现动态加载geojson的方法

    本文通过实例代码给大家介绍基于Vue+Openlayer实现动态加载geojson的方法,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧...2021-09-01
  • PC蓝牙通信C#代码实现

    这篇文章主要为大家详细介绍了PC蓝牙通信C#代码实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
  • jquery对Json的各种遍历方法总结(必看篇)

    下面就为大家带来一篇jquery对Json的各种遍历方法总结(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-10-02
  • 解决HttpPost+json请求---服务器中文乱码及其他问题

    这篇文章主要介绍了解决HttpPost+json请求---服务器中文乱码及其他问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-22
  • C#串口通信程序实例详解

    在.NET平台下创建C#串口通信程序,.NET 2.0提供了串口通信的功能,其命名空间是System.IO.Ports,创建C#串口通信程序的具体实现是如何的呢?让我们开始吧...2020-06-25
  • 替换json对象中的key最佳方案

    本文给大家介绍如何替换json对象中的key,通过实例代码给大家介绍key的替换方法,代码也很简单,需要的朋友参考下吧...2021-06-02
  • JSON字符串转换JSONObject和JSONArray的方法

    这篇文章主要介绍了JSON字符串转换JSONObject和JSONArray的方法的相关资料,需要的朋友可以参考下...2016-06-12
  • 快速理解MySQL中主键与外键的实例教程

    主键与外键的关系,通俗点儿讲,我现在有一个论坛,有两张表,一张是主贴 thread,一张是回帖 reply先说说主键,主键是表里面唯一识别记录的字段,一般是帖子id,体现在访问的时候,例如是 thread.php&#63;id=1 表示我要访问的是帖子...2015-11-24
  • 解决Golang json序列化字符串时多了\的情况

    这篇文章主要介绍了解决Golang json序列化字符串时多了\的情况,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-12-24
  • 使用MSScriptControl 在 C# 中读取json数据的方法

    下面小编就为大家带来一篇使用MSScriptControl 在 C# 中读取json数据的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • IE兼容模式下提示JSON对象未定义的错误解决办法

    在js中用了JSON.parse方法在IE8,IE9,IE10兼容模式下提示JSON未定义,搜狗等IE内核的浏览器则是功能失效chrome谷歌浏览器表现一如既往的好用解决办法:判断当前浏览器是否支持JSON...2013-08-20
  • Springmvc ResponseBody响应json数据实现过程

    这篇文章主要介绍了Springmvc ResponseBody响应json数据实现过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-10-26
  • java HttpClient传输json格式的参数实例讲解

    这篇文章主要介绍了java HttpClient传输json格式的参数实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-22