请考虑以下代码片段我已经提交了一个包含背景图像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'
的查询字符串,其中a
和b
是表单字段。您可能想要获取a
或b
的值——下面的代码将帮助您:
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