Ajax同步和异步的区别

jquery的async:false,这个属性
默认是true:异步,false:同步。

 

async默认的设置值为true,这种情况为异步方式,就是说当ajax发送请求后,在等待server端返回的这个过程中,前台会继续 执行ajax块后面的脚本,直到server端返回正确的结果才会去执行success,也就是说这时候执行的是两个线程,ajax块发出请求后一个线程 和ajax块后面的脚本(另一个线程)例:

 

$.ajax({

type:"POST",

url:"Venue.aspx?act=init",

dataType:"html",

success:function(result){ //function1()

f1();

f2();

}

failure:function (result) {

alert('Failed');

},

}

function2();

 

在上例中,当ajax块发出请求后,他将停留function1(),等待server端的返回,但同时(在这个等待过程中),前台会去执行function2(),也就是说,在这个时候出现两个线程,我们这里暂且说为function1() 和function2()。

当把asyn设为false时,这时ajax的请求时同步的,也就是说,这个时候ajax块发出请求后,他会等待在function1()这个地方,不会去执行function2(),知道function1()部分执行完毕。

提示:其实如果同步就失去了ajax的意义.

 

 


关注公众号,了解更多it技术(it问答网

ajax返回的数据类型中常见常用的有哪些?

通常如果用jquery实现的话有Html,text,xml和json四种类型,但事实上Ajax可以传回任意的数据类型。

type

(默认: “GET“) 请求方式 (“POST” 或 “GET“), 默认为 “GET

 

dataType

类型:String

预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断,比如 XML MIME 类型就被识别为 XML。在 1.4 中,JSON 就会生成一个 JavaScript 对象,而 script 则会执行这个脚本。随后服务器端返回的数据会根据这个值解析后,传递给回调函数。可用值:

  • “xml”: 返回 XML 文档,可用 jQuery 处理。
  • “html”: 返回纯文本 HTML 信息;包含的 script 标签会在插入 dom 时执行。
  • “script”: 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了 “cache” 参数。注意:在远程请求时(不在同一个域下),所有 POST 请求都将转为 GET 请求。(因为将使用 DOM 的 script标签来加载)
  • “json”: 返回 JSON 数据 。
  • “jsonp”: JSONP 格式。使用 JSONP 形式调用函数时,如 “myurl?callback=?” jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。
  • “text”: 返回纯文本字符串

 

 

ajax:html

jQuery.ajax({
url:”×××”,
dataType:”html”,
async: true,
type: “post”,
success: function (data){
var aa=$(data).find(‘#id’).val();
alert(aa);
}
});

 

ajax:json

JS:

$.ajax({
type: “POST”,
url: “jk.php”,
// data: “name=John&location=Boston”,
success: function(msg){
// alert( “Data Saved: ” + msg );
var obj=JSON.parse(msg);
alert(obj[0].username);

}
});

 

php:

include(“DB.class.php”);
$obj=new DB(“127.0.0.1″,”root”,”root”);
$arr=$obj->Select(“select * from obj_users order by id desc”);
echo json_encode($arr);

 

 

 

 

http://www.w3school.com.cn/jquery/ajax_ajax.asp

https://www.cnblogs.com/bujianchenxi/p/6060799.html


关注公众号,了解更多it技术(it问答网

本文实例讲述了php对象和数组相互转换的方法。分享给大家供大家参考

===========================方案一:$变量=(数据类型)值;

项目开发中,对象与数组的转换。

$变量=(数据类型)值; //将执行把值按指定的数据类型进行转换。

//数组转对象
$obj=(object)array("name"=>'张三22','password'=>'123456');
echo $obj->name;

//对象转数组
$arr=(array)$obj;
echo $arr['password'];

//自定义对象,然后转成数组
$obj2=(object)"";
$obj2->xingming="李四";
$obj2->shengao="177";
$arr2=(array)$obj2;
echo $arr2['shengao'];

 

===========================方案二:直接使用自定义函数

这里定义2个php匿名对象和数组相互转换的函数,代码如下:

<?php

function array2object($array) {
if(is_array( $array)) {
$obj= new  StdClass();
foreach($array  as  $key=> $val){
$obj->$key= $val;
}
}
else{ $obj= $array; }
return $obj;
}
function object2array($object) {
if(is_object($object)) {
foreach($object  as  $key=> $value) {
$array[$key] = $value;
}
}
else{
$array= $object;
}
return $array;
}
//用法示例如下:
$array= array('foo'=> 'bar','one'=> 'two','three'=> 'four');
$obj= array2object($array);
print$obj->one; // output's "two"

$arr= object2array($obj);
print$arr['foo']; // output's bar
?>
 

 

 

关注公众号,了解更多it技术(it问答网

批量更新记录2种方案分析

表结构:
/* 方案一:
foreach($arr as $k=>$v){
$sql=”update obj_config2 set content='”.$v.”‘ where title2='”.$k.”‘”;
mysqli_query($conn,$sql);
}
*/
/*
上面即是循环一条一条的更新记录。一条记录update一次,这样性能很差,也很容易造成阻塞。
那么能不能一条sql语句实现批量更新呢?mysql并没有提供直接的方法来实现批量更新,但是可以用点小技巧来实现。
UPDATE categories
    SET 字段1 = CASE 字段2
        WHEN 1 THEN 3
        WHEN 2 THEN 4
        WHEN 3 THEN 5
    END
WHERE 字段2 IN (1,2,3)
这句sql的意思是,更新 字段1 字段,如果‘字段2‘=1 则‘字段1’ 的值为3,如果‘字段2‘=2 则‘字段1’ 的值为4,如果‘字段2‘=3 则‘字段1’ 的值为5。
*/
//方案二:推荐使用,这个效率更高,因为是拼装成一个完成的sql更新的。
$sql=”update obj_config2 set content = CASE title2  “;
foreach($arr as $k=>$v){
$sql.=”WHEN ‘”.$k.”‘ THEN ‘”.$v.”‘ “;
}
$sql.=”END”;

关注公众号,了解更多it技术(it问答网

mysql时间函数,字符串时间转成时间戳;时间戳转换成字符串

时间函数。
sql:
unix_timestamp($strdate); //把我们的字符串时间-》时间戳格式。

若 $strdate为空!则返回的是当前的时间戳!

FROM_UNIXTIME($intdate);//把我们的时间戳-》字符串。

在sql中如何获得当前的年月日,时分秒?

FROM_UNIXTIME(unix_timestamp());

update users set addtime=FROM_UNIXTIME(unix_timestamp()) where username=’jacky’ and password=’abc123′


关注公众号,了解更多it技术(it问答网

遍历文件夹的2种方法

遍历文件夹的2种方法
方法一:
<?php
$i="upfiles";//$i是要显示的目录,*表示当前目录下所有目录和所有文件
while($file=glob($i)){
 
foreach($file as $s){
 
//$t=is_dir($s) ? "[文件夹] $s<br />" : "[文件] $s<br />";
if(!is_dir($s)){
echo $s."<br/>";
}
 
}
 
$i.="/*";
 
}
 
?>

 

方法二:
核心知识点:
$dir=opendir("目录");
readdir( $dir );
closedir( $dir );
 
 
 
function showlist($folderdir){
$dirname=$folderdir;
$dir = opendir( $dirname );
while( $file = readdir( $dir ) ){
 
if($file!="."&&$file!=".."&&is_dir($dirname."/".$file)){
showlist($dirname."/".$file);
}
else if($file!="."&&$file!="..") {
echo $file."<br/>";
}
}
closedir( $dir );
}
 
showlist("upfiles");

 


关注公众号,了解更多it技术(it问答网

解决Error(1133): Can’t find any matching row in the user table

刚刚尝试使用同步文件法把整个mysql的数据文件传送到另外一台服务器做双机备份。

转移完成后通过命令行形式用root账户连接上mysql查看了一下,所有数据完好,用户数据也转移过来了。

但是当我把网站数据也导入该服务器之后,所有需要访问mysql数据库的网站全部出现了无法连接的错误,症状就如同密码错误一样。

使用phpmyadmin进入mysql查看,在权限页面也可以正常看到所有的mysql账户,在mysql.user表中所有的数据也很正常。

然后我尝试了一下修改导入的账户的密码,使用了


1
SET PASSWORD FOR ‘username’@‘localhost’ = PASSWORD( ‘****’ )

的方法,收到了以下错误提示

Error (1133): Can’t find any matching row in the user table

经过在网上各种查询之后,找到的最简单的办法就是在mysql命令行中执行set FLUSH

PRIVILEGES
;
这一语句即可。

发生这一错误的原因是在变更了mysql.user表之后,没有使用FLUSH PRIVILEGES命令来更新权限表(grant tables)


关注公众号,了解更多it技术(it问答网

设置服务器的MySQL允许远程访问/外网访问

进入mysql:

mysql -uroot -p

输入密码。

选择mysql数据库:

use mysql;

增加允许远程访问的用户或者允许现有用户的远程访问。
给root授予在任意主机(%)访问任意数据库的所有权限。

update user set host='%' where user='root' and host='localhost';

退出mysql:

exit

重启数据库:

[root@localhost ~]# service mysqld restart

关注公众号,了解更多it技术(it问答网