如何解决通过AJAX将Javascript对象转换为PHP数组
我正在尝试使用AJAX发送以下javascript对象
var bodycontent = {
search: search,query: query,start: start,show: show,};
我的AJAX通话
$.ajax({
type: "POST",data: dataString,cache: false,url: 'url.php',success: function(html) {
alert(html);
}
})
变量dataString
var dataString = "bodycontent="+bodycontent;
我尝试使用console.log来获取bodycontent以确保它具有数据,结果如下所示
{search: "human",query: Array(1),start: 20,show: 40}
在PHP页面上,我尝试按照以下代码对要发送的对象进行解码
json_decode($_POST['bodycontent'],true)
但是该值为空。如果我不使用json_decode,它将返回[object Object]
解决方法
您不能将对象和字符串连接起来
只需以data
的形式发送对象,jQuery就会在内部对其进行序列化
$.ajax({
type: "POST",data: bodycontent,cache: false,// pointless since POST doesn't get cached by browser
url: 'url.php',success: function(html) {
alert(html);
}
})
然后在php中查找对象内的各个键,例如:
$_POST['search']
$_POST['query']// will be array since that's what you are sending
etc
,
如果使用JSON.stringify
,则可以通过强制转换为字符串来准备传输对象。 Ajax请求的有效负载将名称bodycontent
作为参数(您将在POSTed数据中查找该参数)并附加字符串化的对象常量数据。
<?php
if( $_SERVER['REQUEST_METHOD']=='POST' ){
ob_clean();
$body=json_decode($_POST['bodycontent']);
exit( print_r( $body,true ) );
}
?>
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8' />
<title></title>
<script src='//code.jquery.com/jquery-latest.js'></script>
<script>
// whatever this should be...
var bodycontent = {
search: 'human',query: [1,2,3,4,5,6],start: 20,show: 40
};
$.ajax({
type:"POST",data:{ bodycontent:JSON.stringify( bodycontent ) },cache:false,url:'url.php',success:function(html) {
alert(html);
}
});
</script>
</head>
<body>
<!-- content -->
</body>
</html>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。