如何将数组处理为获取STR到url

how to process an array as get str to url?

本文关键字:获取 STR url 处理 数组      更新时间:2023-09-26

如何处理数组作为get STR到url?
我想发送一个数组到我的PHP页面作为get促进者,不关心有多长get str,它只在我的网站管理方面使用。我应该如何处理数组到一个字符串,当在PHP站点我可以重新处理它回数组。

<script type="text/javascript">
    function arr_to_get_str(arr){
        // how should I make a get string from an array? 
        // what format should this str shows
        return str;
    }
    var arr=[
        [
            key :'products_id',
            operator: '>',
            value : '20'
        ],
        [
            key :'products_name',
            operator: 'like',
            value : '%hello world%'
        ]
    ];
    var base_uri='http://localhost/test.php';
    var url= base_uri + '?'+ arr_to_get_str(str);
    location.href = url;
</script>

对于复杂的数据结构,最好的编码是JSON。JSON在URL中是相当低效的,因为很多字符需要进行低效的URL转义。对于Rison来说,这可能是一个很好的用例。您可以在网站上找到Javascript实现,在这里找到PHP实现。

不如用encodeURIComponent:

var url= base_uri + '?q='encodeURIComponent(JSON.stringify(arr)); 

:

$arrParameters = isset($_GET['q']) ? json_decode(url_decode(($_GET['q'])) : array();

这将获得参数,如果没有则返回空数组。这不是最佳实践,但如果它是一个"黑客"管理系统,请使用它

  1. 创建一个JSON字符串的数组,&使用window.btoa

    将其编码为Base64
    var jsonString = JSON.stringify(array);
    var encString  = window.btoa(jsonString); 
    // supports all except- ie- below version 10
    
  2. 发送请求参数

    var url= base_uri + '?request='+ arr_to_get_str(arr);

  3. .php文件中,获取字符串&解码为Array或Object

    $requestJsonStr = base64_decode($_GET['request']);
    //EITHER make an Array from the JSON-String
    $requestArray = json_decode($requestJsonStr, TRUE);
    //OR make an Object from the JSON-String
    $requestArray = json_decode($requestJsonStr, FALSE);
    

试试这个,

function arr_to_get_str(arr){

  var str='';
    var strarr= new Array();
    for(var i=0;i<arr.length;i++)
    {
        strarr.push(arr[i]['key']+' '+arr[i]['operator']+' '+arr[i]['value']);
    }
    str=strarr.join(' AND ');
    return str;
}
var arr=[
    {
        key :'products_id',
        operator: '>',
        value : '20'
    },
    {
        key :'products_name',
        operator: 'like',
        value : '%hello world%'
    }
];
var base_uri='http://localhost/test.php';
var url= base_uri + '?q='+arr_to_get_str(arr);
alert(url);
//http://localhost/test.php?q=products_id > 20 AND products_name like %hello world%
操纵http://jsfiddle.net/vSuDZ/