繁体   English   中英

Javascript 对象通过 AJAX 到 PHP 数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM