【问题标题】:Using getJSON to post JSON object to PHP page and also retrieve a JSON object使用 getJSON 将 JSON 对象发布到 PHP 页面并检索 JSON 对象
【发布时间】:2012-07-10 20:20:51
【问题描述】:

我正在尝试构建一个大量利用 JSON 进行数据访问的 HTML5 应用程序。在某些情况下,我想使用 getJSON 对象(使用 JavaScript 和 JQuery)将 JSON 对象发布到 PHP 页面。然后,该 PHP 页面将抓取 JSON 对象,执行一些业务逻辑,然后将单独的 JSON 对象返回到调用页面。

我可以获得返回到调用页面的有效 JSON 对象,但我似乎无法获取在原始请求中传递的 JSON 对象。我已经尝试过 $_GET、$_POST 和其他几个选项。一切都无济于事。

这是我在原始页面上的代码。这非常简单——当用户单击按钮时,我们会执行 AJAX 调用,将 JSON 对象传递给名为 receive_jason.php 的页面。该页面应该评估传入的 JSON 对象并将另一个 JSON 对象返回到原始页面。

第 1 页:

<html lang="en">
<head>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
</head>

<script type="text/javascript">
function StartPost()
{
var strJSON = '{"id":"3","artist":"The Beatles","alblum":"White Alblum"}';
var jsonURL = "receive_json.php";

$.getJSON(  jsonURL, 
            strJSON, 
            function(data) {
                var items = [];

                responseMsg     = data["success"];
                alert(responseMsg);

    });

}

</script>

<body>
     <input type="button" name="Post Data" value="Post Data" onClick="StartPost();">
</body>

</html>

这里是receive_json.php页面上的PHP代码...

<?php
    $incomingData = $_GET['artist'];
    $myText =(string) $incomingData;
    echo "{\"success\":\"" . strlen($myText) . "\"}";
?>

为了清楚起见,getJSON 调用有效,并且我在返回时确实收到了有效的 JSON 调用。但我无法访问我传入的 JSON 对象。

我的问题....

1) 这只是一个我可以修复的简单语法错误吗?

2) getJSON 是否适合这项任务?

3) 有没有一种简单的方法可以让我调试 getJSON 请求,以便查看页面上发生的情况?

【问题讨论】:

  • 如 SLaks 所说,如果要使用 POST,请使用$.ajax。老实说,我对.ajax() 语法感到非常满意,无论如何我都使用它。 ;-) 请记住,在服务器端,如果您正在发布 JSON,则您正在向参数发布一个字符串。它本质上不是“JSON 对象”,您需要使用 PHP 解码为可用对象。 PHP 有原生的 JSON 解析工具吗?
  • @Greg Pettit - 请参阅 json_encode 和 json_decode 以在 PHP 中处理 JSON。

标签: php jquery json getjson


【解决方案1】:

$.getJSON 发送 GET 请求。

您需要将$.ajaxmethod: "POST"type: "json" 一起使用。

【讨论】:

    【解决方案2】:

    使用这样的东西:

    $.ajax({
                    url: "yourfile_orserverfile.php",
                    type: "POST",
                    data: {
                      //whatever your data is
                    }
                    datatype: "json",
                    success: function (status) {
                        if (status.success == false) {
                            //alert a failure message
                        } else {
                            //alert a success message
                        }
                    }
                });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-06
      • 2015-05-05
      • 2015-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多