[英]Keep the true ARRAY OBJECT between Javascript -to- PHP via Ajax?
[英]Javascript Object via AJAX to PHP Array
我正在尝试使用 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);
}
})
变量数据字符串
var dataString = "bodycontent="+bodycontent;
我试过 console.log for 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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.