壹。【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】