PHP 与 js json的通信实例
选简介一下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');
相关文章
- 这篇文章主要介绍了gin 获取post请求的json body操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-15
- 新版 Mysql 中加入了对 JSON Document 的支持,可以创建 JSON 类型的字段,并有一套函数支持对JSON的查询、修改等操作,下面就实际体验一下...2016-08-23
- 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的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2017-01-26
- 这篇文章主要介绍了详解.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#代码实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
- 下面就为大家带来一篇jquery对Json的各种遍历方法总结(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-10-02
解决HttpPost+json请求---服务器中文乱码及其他问题
这篇文章主要介绍了解决HttpPost+json请求---服务器中文乱码及其他问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-22- 在.NET平台下创建C#串口通信程序,.NET 2.0提供了串口通信的功能,其命名空间是System.IO.Ports,创建C#串口通信程序的具体实现是如何的呢?让我们开始吧...2020-06-25
- 本文给大家介绍如何替换json对象中的key,通过实例代码给大家介绍key的替换方法,代码也很简单,需要的朋友参考下吧...2021-06-02
JSON字符串转换JSONObject和JSONArray的方法
这篇文章主要介绍了JSON字符串转换JSONObject和JSONArray的方法的相关资料,需要的朋友可以参考下...2016-06-12- 主键与外键的关系,通俗点儿讲,我现在有一个论坛,有两张表,一张是主贴 thread,一张是回帖 reply先说说主键,主键是表里面唯一识别记录的字段,一般是帖子id,体现在访问的时候,例如是 thread.php?id=1 表示我要访问的是帖子...2015-11-24
- 这篇文章主要介绍了解决Golang json序列化字符串时多了\的情况,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-12-24
使用MSScriptControl 在 C# 中读取json数据的方法
下面小编就为大家带来一篇使用MSScriptControl 在 C# 中读取json数据的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25- 在js中用了JSON.parse方法在IE8,IE9,IE10兼容模式下提示JSON未定义,搜狗等IE内核的浏览器则是功能失效chrome谷歌浏览器表现一如既往的好用解决办法:判断当前浏览器是否支持JSON...2013-08-20
Springmvc ResponseBody响应json数据实现过程
这篇文章主要介绍了Springmvc ResponseBody响应json数据实现过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-10-26java HttpClient传输json格式的参数实例讲解
这篇文章主要介绍了java HttpClient传输json格式的参数实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-22