547
技術社區[雲棲]
js 和 php傳值的問題
壹。【js PHP】
做項目的時候,經常遇到前台js將數據通過$.get或者$.post以及$.call方法發送到指定的URL,後台php獲取數據,進行處理:
//js代碼:
function batch_setProblemAction() { var orderids = select_check(); var problems_desc = document.getElementById("problem_order_message").value; var params = "&act=multyProblemAction&order_ids="+orderids+"&problems_desc="+encodeURI(problems_desc); $.post('order.php?is_ajax=1'+params,{},function(data){ if(data.content.actionState==0) { alert('批量設置問題單修改成功'); $('#problems_orders_pops').hide(); listTable.loadList(); } else { $('#problems_orders_pops').hide(); $('#errorpop').show(); $('#error_body').html('批量設置問題單不成功,或許您選的訂單已經是問題單!!!'); $("#close_show").click( function () { $('#errorpop').hide(); }); } },'json'); }
//order.php
if($_REQUEST['act'] == 'multyProblemAction'){ $problem_order_message = $_REQUEST['problems_desc']; $order_ids = $_REQUEST['order_ids']; $update_sql = "update order_info set how_oos='" . $problem_order_message . "' where process_status='0' and order_id in (" . $order_ids.")"; $res=$GLOBALS['db']->query($update_sql); $order_ids=explode(",", $_REQUEST['order_ids']); $id_lenth=count($order_ids); $result = array ('actionState' => '9', 'order_id' => '' ); for($i=0;$i<$id_lenth;$i++){ $state = problemAction($order_ids[$i]); $action_note = empty($_REQUEST['action_note']) ? '' : $_REQUEST['action_note']; if($state==0) { update_order_updatetime($order_ids[$i]);//修改時間戳 order_log_Action($order_ids[$i], '批量設為問題單', 'problem', $action_note.$problem_order_message); $result = array ('actionState' => $state, 'order_id' => $order_ids[$i] ); } } make_json_result ( $result ); }
在js中,如果不將傳遞的中文字符進行編碼,近乎出現亂碼的情況,在後台打印sql的時候,發現全是”???????|?????“的亂碼,於是,采取了下麵的方式:
var params = "&act=multyProblemAction&order_ids="+orderids+"&problems_desc="+encodeURI(problems_desc);
在php頁麵進行處理的時候,可以用函數urldecode()解碼,但對於php,可以不用解碼,直接使用,下麵兩種方式都正確:
方式一:
$problem_order_message = $_REQUEST['problems_desc'];
方式二:
$problem_order_message = urldecode($_REQUEST['problems_desc']);
貳。【PHP js】
最後更新:2017-04-03 05:39:53