【问题标题】:Decode JSON with PHP用 PHP 解码 JSON
【发布时间】:2012-08-18 11:44:28
【问题描述】:

有人能告诉我为什么这个带有 JqUERY 的简单 JSON 不适合我吗?

我有这个JS代码,

var jsonParam = <? $json = $_SESSION['searchSess']; echo json_encode($json);?>;
jsonParam = JSON.stringify(jsonParam);
$(document).ready(function(){
      $.post("searching.php?rdr=search", {data: jsonParam,}, function (data){
        alert(data)
    })
});

这是 PHP 代码,

$data = json_decode($_POST['jsonParam'], true);
var_dump($data);

并且响应为空或什么都没有,

可以请人帮忙这里有什么问题吗?

谢谢

【问题讨论】:

    标签: php jquery ajax json post


    【解决方案1】:

    你想要$_POST['data'],而不是$_POST['jsonParam']

    【讨论】:

      【解决方案2】:

      jsonParam 是 JavaScript 变量,但它作为 $_POST['data'] 发布到 PHP,因为您将 {data: jsonParam} 传递到 $.post

      // Instead:
      $data = json_decode($_POST['data'], TRUE);
      var_dump($data);
      

      【讨论】:

      • 谢谢,但这也返回null,:(
      • var_dump($_POST) 看看你有没有得到任何东西,并查看你的页面源以确保原始json_encode($json) 打印了它应该打印的内容。
      • 好的,var_dump($_POST) 我得到了这个[data] =&gt; {\"locations\":\"ARP\"},那么我该如何处理数组呢?
      • @thegrede json_decode($_POST['data'], TRUE) 处理这对我来说很好,$data["locations"]ARP
      • 但是当我这样做时json_decode($_POST['data'], TRUE) 我什么也没得到,:(
      【解决方案3】:

      {jsonParam: jsonParam,} 而不是{data: jsonParam,}

      【讨论】:

        【解决方案4】:

        尝试以下方法:

        JS:

        var jsonParam = <? 
            $json = $_SESSION['searchSess']; 
            $json['longitude'] = (string) $json['longitude'];
            $json['latitude'] = (string) $json['latitude'];
        
            echo json_encode($json);
        ?>
        
        $(document).ready(function(){
              $.post("searching.php?rdr=search", {data: jsonParam }, function (data){
                alert(data)
            })
        });
         
        

        PHP:

        $data = json_decode($_POST['data'], true);
        var_dump($data);
        

        我怀疑您的经度和纬度字段没有被正确解析为浮点数。

        【讨论】:

        • 不! :(它也返回空,我不知道为什么,我也在复制它并粘贴它并且没有字符串返回,brrrrr。
        • 已更新,再试一次,我错过了 JSON.parse 上的引号。
        • 是的,我之前也尝试过使用引号,但相同:(没有返回,我猜它在其他地方,需要弄清楚,当它在你的服务器?
        • 我不知道你的$_SESSION['searchSess'] 是什么,所以我很难判断它是否会起作用:) 你能把你从echo json_encode($json); 中得到的东西贴在空白页上吗?跨度>
        • 这是空白页的结果,{"locations":"ARP","pickupair":"JFK","dropoffair":"JFK","pickUpLocation":"John F. Kennedy International Airport (JFK), 144-02 135th Ave, Queens, NY 11436, USA","dropOffLocation":"","pickupmonth":"08","drol":"false","pickupday":"23","pickupyear":"2012","dropoffmonth":"08","dropoffday":"30","dropoffyear":"2012","pickupmin":"09","pickuphour":"00","dropoffpmin":"09","dropoffhour":"00","latitude":4064384.36,"longitude":-7378230.35,"relatitude":0,"relongitude":0,"hourPU":"18","hourDO":"18"}
        【解决方案5】:

        $data = json_decode($_POST['jsonParam'], true); 应该是$data = json_decode($_POST['data'], true);

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-03-26
          • 2013-11-05
          • 2011-09-10
          • 2017-05-31
          • 2023-03-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多