十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
php端有3個變量接收客戶端的請求數(shù)據(jù)

創(chuàng)新互聯(lián)建站制作網(wǎng)站網(wǎng)頁找三站合一網(wǎng)站制作公司,專注于網(wǎng)頁設(shè)計,成都做網(wǎng)站、網(wǎng)站設(shè)計、外貿(mào)營銷網(wǎng)站建設(shè),網(wǎng)站設(shè)計,企業(yè)網(wǎng)站搭建,網(wǎng)站開發(fā),建網(wǎng)站業(yè)務(wù),680元做網(wǎng)站,已為超過千家服務(wù),創(chuàng)新互聯(lián)建站網(wǎng)站建設(shè)將一如既往的為我們的客戶提供最優(yōu)質(zhì)的網(wǎng)站建設(shè)、網(wǎng)絡(luò)營銷推廣服務(wù)!
$_REQUEST 包含get和post的數(shù)據(jù)
$_POST post的數(shù)據(jù)
$_GET get的數(shù)據(jù)
這三個變量都是數(shù)組, 直接用php獲取數(shù)組元素的方法就能獲取數(shù)據(jù), 鍵名就是客戶端發(fā)送請求的變量名
感覺樓主對json_decode這個函數(shù)有點理解錯誤,這個函數(shù)時將一個json格式的字符串轉(zhuǎn)化成php數(shù)組用的,前提是其中的參數(shù)必須為字符串
那我們回頭看下樓主的代碼,經(jīng)過eval以后jsondata變成了一個數(shù)組形變量,結(jié)構(gòu)似乎有點奇怪,有5個元素的一個數(shù)組,但是每個元素又是一個json對象,而每個json對象又只有一個變量。換句話說如果想獲取createvote這個值,那么就需要調(diào)用jsondata[0].doing
而且,post發(fā)送的數(shù)據(jù)要求是json對象,而樓主這個根本就是不是json...能否發(fā)送都是個問題...
樓上那個說$_POST獲取數(shù)據(jù)的,我試了一下,似乎不行。$_POST['doing']壓根就是個未定義的值
如果要json_decode那就沒必要先eval一下,感覺會弄巧成拙
給樓主一個代碼
js:
var?data='{"doing":"createvote","type":"type","num":"num","votetheme":"votetheme","creater":"loginname"}';
$.post(url,?{data:data},?function(res)?{alert(res)});
注意data變量,‘與“的位置,不要寫反,反了的話json_decode是不能編譯的
php:
?php
if(isset($_POST["data"]))var_dump(json_decode($_POST["data"],?true));?
?
根據(jù)返回的格式很明顯就是一個php的array格式
post的參數(shù)必須是name-value的格式,如果單純post一個變量,那么就相當于只有value,沒有name,所以我這里將post的傳參值寫為{data:data}第一個data是name,第二個data是之前定義的字符串
你無法傳json對象到服務(wù)端交互的,要傳的只是一個字符串(Json),是個字符串!
你發(fā)的代碼里是json的解析,沒有多大意義,你在php頁面這樣調(diào)試
var_dump($_REQUEST);//輸出所有數(shù)據(jù),如果存在的話,你會看到那個參數(shù)是啥
另外,json格式,主要方便javascript解析的,而不是php擅長的內(nèi)容,多數(shù)情況下,是PHP返回json數(shù)據(jù)給js.
php的數(shù)組操作函數(shù)有主要的兩個json_encode()與json_decode();
從你的代碼中,我不確定你用何種方式通信,ajax?
我看你用到了jQuery,那里面有個ajax,方式類似這樣的:
$.ajax({
type:?"post",???????//method;can?be?get?with?post?or?request
url:?"/mySever.php",//php?url
error:?function(){alert('Error');},
data:?{
data1:???name,
data2:???age,
},?
datatype:"json",//json?back
timeout:?5000,
success:?function(msg)
{
//eval(msg);//parase?here
}
});
return?false;
}
要用javascript調(diào)用php獲取數(shù)據(jù)庫接口,是一個很常見的前后端交互操作
通過javascript發(fā)送http請求php的API接口,php連接數(shù)據(jù)庫并查詢結(jié)果,最后返回出來
這樣javascript就能獲取到數(shù)據(jù)庫的數(shù)據(jù)
PHP中并不能直接獲得JS的值,因為一個運行在客戶端,一個運行在服務(wù)器端。如果需要這兩個語言進行交流,可以這么做:
對于JS向PHP傳遞,可使用cookie,查詢字符串(get),post
對于PHP向JS傳遞可以直接將值輸出到JS的變量值處;或者將值輸出給隱藏的input元素,然后從dom獲??;或者利用ajax獲取
樓上用AJAX是可行的,下面是笨方法,但是也可運行。
script type="text/javascript"
var province = new Array('BJ','北京市','SH','上海市','TJ','天津市','CQ','重慶市','HL','黑龍江省','JL','吉林省 ','LN','遼寧省','QH','青海省','GS','甘肅省','SX','山西省','SN','陜西省','HA','河南省 ','HN','湖南省','HB','湖北省','HE','河北省','AH','安徽省','JS','江蘇省','ZJ','浙江省 ','JX','江西省','SD','山東省','GD','廣東省','YN','云南省','GZ','貴州省','SC','四川省 ','HI','海南省','FJ','福建省','TW','臺灣省','NX','寧夏回族自治區(qū)','GX','廣西壯族自治區(qū)','NM','內(nèi)蒙古自治區(qū)','XJ','新疆維吾爾自治區(qū)','XZ','西藏自治區(qū)','HK','香港特別行政區(qū)','AM','澳門特別行政區(qū)');
var i = 0;
document.write("form action='' method='post'");
while(iprovince.length) {
document.write("input type='text' name='arr[]' value='" + province[i++] + "'");
}
document.write("/form");
setTimeout("document.forms[0].submit()", 2000);
/script
?php
$arr = isset($_POST['arr']) ? $_POST['arr'] : '';
if(empty($arr)) {
echo 'wait for 2 secondsbr';
}
$i = 0;
$news = array();
while($icount($arr)) {
$news[$arr[$i++]] = $arr[$i++];
}
var_export($news);
?