如何解码序列化url从javascript在php


how to decode serialize url from javascript in php

请考虑以下代码片段我已经提交了一个包含背景图像url的表单,我已经序列化了表单数据。在php中,URL没有解码,如何获得原始URL

$("#slider_settings_form").submit(function(e) {
    var postData = $(this).serialize();
    submited form
    $.ajax({
        url: ajaxurl,
        data: {
            "params": postData,
            "action": "saveFormSettings"
        },
        method: "POST",
        success: function(response) {
            alert(response);
        },
    });

使用string urldecode( string $str )函数解码您编码的URL数据更多信息请点击此链接

一个成功的解析可以通过像这样添加urldecode来完成:

parse_str(urldecode($_REQUEST['params']), $params);

urldecode很重要,因为它将url编码的字符串转换为可解析的字符串。

如果你想从javascript中实现它,你可以使用这些方法:

var uri = "http://stackoverflow.com/questions/30587877/how-to-decode-serialize-url-from-javascipt-in-php"
var uri_enc = encodeURIComponent(uri); //for encoding
var uri_dec = decodeURIComponent(uri_enc); //for decoding

这里是更多细节的链接:Url解码和编码

看看这个相关的问题。

我们需要看看你是如何在PHP中解码数据来帮助你,但除了我之前的答案(建议使用urldecode),你还应该确保postData实际上有数据在里面。

只有"成功的控件"被序列化为字符串[…]- 第二个答案

完全有可能postData是nil。您应该通过提醒来测试它,然后从那里开始。我链接到的问题有一个更全面的答案与代码示例。

var postData = $(this).serialize();——这将创建一个类似'a=1&b=2'的查询字符串,其中ab是表单字段。您可能想要获取ab的值——下面的代码将帮助您:

parse_str($_GET['params'], $params);
// then you can use $params['a'] to fetch form field 'a'
print_r($params);
// => 
//Array
//(
//    [a] => 1
//    [b] => 2
//)

有关parse_str的更多信息,请参见http://php.net/manual/en/function.parse-str.php