本文目錄一覽:
- 1、關於 JS給PHP傳遞數組的問題!
- 2、如何把JS獲取的數據傳遞給php
- 3、js到底如何將一堆數組通過post的方法發送給php
- 4、怎樣把js中的數組提交到php中
- 5、怎樣提交JS數組給PHP
關於 JS給PHP傳遞數組的問題!
你好,很高興為你解答:
你大可換做對象賦值方式,如:
info[‘aa’] = ‘a’;
info[‘bb’] = ‘b’;
換成
info.aa = “數值”;
info.bb = “數值”;
形式
如有你問可繼續追加。
如何把JS獲取的數據傳遞給php
方法1 js的location 或 document 的url傳值
方法2 js的submit提交
方法3 js的ajax
數據可以是簡單的字元串 也可以是 json格式或 xml等
js到底如何將一堆數組通過post的方法發送給php
準備資料庫
本例我們使用Mysql資料庫,創建一張user表,表結構如下:
CREATE TABLE `user` (
`id` int(11) NOT NULL auto_increment,
`username` varchar(30) NOT NULL COMMENT ‘用戶名’,
`password` varchar(32) NOT NULL COMMENT ‘密碼’,
`login_time` int(10) default NULL COMMENT ‘登錄時間’,
`login_ip` varchar(32) default NULL COMMENT ‘登錄IP’,
`login_counts` int(10) NOT NULL default ‘0’ COMMENT ‘登錄次數’,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
然後往user表中插入一條用戶信息數據:
INSERT INTO `user` (`id`, `username`, `password`, `login_time`, `login_ip`, `login_counts`)
VALUES(1, ‘demo’, ‘fe01ce2a7fbac8fafaed7c982a04e229’, ”, ”, 0);
index.php
用戶在輸入用戶名和密碼後,提示用戶登錄成功,並顯示相關登錄信息,如果點擊「退出」,則退出到用戶登錄界面。
進入index.php,如果用戶已登錄則顯示登錄信息,如果未登錄則顯示登錄框要求用戶登錄。
div id=”login”
h3用戶登錄/h3
?php
if(isset($_SESSION[‘user’])){ ?
div id=”result”
pstrong?php echo $_SESSION[‘user’];?/strong,恭喜您登錄成功!/p
p您這是第span?php echo $_SESSION[‘login_counts’];?/span次登錄本站。/p
p上次登陸本站的時間是:span?php echo date(‘Y-m-d H:i:s’,$_SESSION[‘login_time’]);?/span/ppa href=’#’ id=’logout’【退出】/a/p
/div
?php }else{?
div id=”login_form”
plabel用戶名:/label input type=”text” class=”input” name=”user” id=”user” //p
plabel密 碼:/label input type=”password” class=”input” name=”pass” id=”pass” //p
div class=”sub”
input type=”submit” class=”btn” value=”登 錄” /
/div
/div
?php }?/div
注意在index.php文件頭應該加上語句:session_start; 同時在head部分引入jquery庫,以及包含global.js,您還可以為登錄框寫個漂亮的CSS樣式,當然本例已經略微寫了個簡單的樣式,請查看源碼。
script type=”text/javascript” src=”js/jquery.js”/scriptscript type=”text/javascript” src=”js/global.js”/script
global.js
global.js文件包括了將要實現的jquery代碼。首先要做的就是讓輸入框獲得焦點,像百度和google那樣一打開,滑鼠游標就在輸入框內。使用代碼如下:
$(function(){
$(“#user”).focus();
});
接著要做的就是,當輸入框獲得和失去焦點時,分別呈現不同的樣式,比如本例中使用不同的邊框顏色,代碼如下:
$(“input:text,textarea,input:password”).focus(function() {
$(this).addClass(“cur_select”);
});
$(“input:text,textarea,input:password”).blur(function() {
$(this).removeClass(“cur_select”);
});
用戶登錄:用戶點擊登錄按鈕後,首先要驗證用戶的輸入不能為空,然後向後台login.php發送一個Ajax請求。當後台驗證登錄成功後,返回登錄用戶信息:如用戶登錄次數和上次登錄時間等;如果登錄失敗,則返回登錄失敗信息。
$(“.btn”).live(‘click’,function(){ var user = $(“#user”).val(); var pass = $(“#pass”).val(); if(user==””){
$(‘div id=”msg” /’).html(“用戶名不能為空!”).appendTo(‘.sub’).fadeOut(2000);
$(“#user”).focus(); return false;
} if(pass==””){
$(‘div id=”msg” /’).html(“密碼不能為空!”).appendTo(‘.sub’).fadeOut(2000);
$(“#pass”).focus(); return false;
}
$.ajax({ type: “POST”, url: “login.php?action=login”, dataType: “json”, data: {“user”:user,”pass”:pass}, beforeSend: function(){
$(‘div id=”msg” /’).addClass(“loading”).html(“正在登錄…”).css(“color”,”#999″)
.appendTo(‘.sub’);
}, success: function(json){ if(json.success==1){
$(“#login_form”).remove(); var div = “div id=’result’pstrong”+json.user+”/strong,恭喜您登錄成功!/p
p您這是第span”+json.login_counts+”/span次登錄本站。/p
p上次登錄本站的時間是:span”+json.login_time+”/span/pp
a href=’#’ id=’logout’【退出】/a/p/div”;
$(“#login”).append(div);
}else{
$(“#msg”).remove();
$(‘div id=”errmsg” /’).html(json.msg).css(“color”,”#999″).appendTo(‘.sub’)
.fadeOut(2000); return false;
}
}
});
});
我在進行Ajax請求時,數據傳輸格式使用的是json,返回的數據也是json數據,使用JS將json數據解析,得到登錄後的用戶信息,然後通過append追加到#login元素下,完成登錄操作。
用戶退出:當點擊「退出」時,向login.php發送一個Ajax請求,後台註銷所有Session,頁面重新回到登錄界面。
$(“#logout”).live(‘click’,function(){
$.post(“login.php?action=logout”,function(msg){ if(msg==1){
$(“#result”).remove(); var div = “div id=’login_form’plabel用戶名:/label
input type=’text’ class=’input’ name=’user’ id=’user’ //p
plabel密 碼:/label input type=’password’ class=’input’ name=’pass’
id=’pass’ //p
div class=’sub’input type=’submit’ class=’btn’ value=’登 錄’ //div
/div”;
$(“#login”).append(div);
}
});
});
login.php
根據前台提交的請求,登錄時,獲取用戶輸入的用戶名和密碼,並與資料庫中對應的用戶名和密碼進行比對,如果比對成功,則將新的更新該用戶登錄信息,並組裝json數據傳給前台。
session_start();require_once (‘connect.php’);
$action = $_GET[‘action’];if ($action == ‘login’) { //登錄
$user = stripslashes(trim($_POST[‘user’]));
$pass = stripslashes(trim($_POST[‘pass’])); if (empty ($user)) { echo ‘用戶名不能為空’; exit;
} if (empty ($pass)) { echo ‘密碼不能為空’; exit;
}
$md5pass = md5($pass); //密碼使用md5加密
$query = mysql_query(“select * from user where username=’$user'”);
$us = is_array($row = mysql_fetch_array($query));
$ps = $us ? $md5pass == $row[‘password’] : FALSE; if ($ps) {
$counts = $row[‘login_counts’] + 1;
$_SESSION[‘user’] = $row[‘username’];
$_SESSION[‘login_time’] = $row[‘login_time’];
$_SESSION[‘login_counts’] = $counts;
$ip = get_client_ip(); //獲取登錄IP
$logintime = mktime();
$rs = mysql_query(“update user set login_time=’$logintime’,login_ip=’$ip’,
login_counts=’$counts'”); if ($rs) {
$arr[‘success’] = 1;
$arr[‘msg’] = ‘登錄成功!’;
$arr[‘user’] = $_SESSION[‘user’];
$arr[‘login_time’] = date(‘Y-m-d H:i:s’,$_SESSION[‘login_time’]);
$arr[‘login_counts’] = $_SESSION[‘login_counts’];
} else {
$arr[‘success’] = 0;
$arr[‘msg’] = ‘登錄失敗’;
}
} else {
$arr[‘success’] = 0;
$arr[‘msg’] = ‘用戶名或密碼錯誤!’;
} echo json_encode($arr); //輸出json數據}elseif ($action == ‘logout’) { //退出
unset($_SESSION);
session_destroy(); echo ‘1’;
}
當前台請求退出時,只需註銷session就可以,並返回1給前台JS處理。
怎樣把js中的數組提交到php中
php端有3個變數接收客戶端的請求數據
$_REQUEST 包含get和post的數據
$_POST post的數據
$_GET get的數據
這三個變數都是數組, 直接用php獲取數組元素的方法就能獲取數據, 鍵名就是客戶端發送請求的變數名
怎樣提交JS數組給PHP
JS裡面使用join把數組轉換為字元串傳遞給PHP,PHP再使用explode把獲取的字元串轉換為數組,例如:
調用的JS:
script type=”text/javascript”
var oCC=new TClientCheck();
var str=oCC.join(‘|’);
location.href=’but.php?str=’+str;
/script
處理的PHP:
?php
$str=$_GET[“str”];
$oCC=explode(‘|’, $str);
print_r($oCC);
?
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/243789.html