如何使PHP可以访问JSON.stringify的JSON数据

时间:2013-02-25 10:34:07

标签: php jquery ajax json post

好的,所以我需要PHP来运行一堆由javascript动态生成的URL。到目前为止,我使用PHP获取数据的唯一经验是使用网站的网址,该网址的JSON数据可通过API直接获取。

所以,在经历了各种各样的不同箍之后,我终于得到了我的数据,以至于我拥有完美的JSON语法中的URL和id(感谢JSON.stringify()!)。现在,我真的想将PHP指向一个url以便开始使用这个JSON ....但是如何?!

我对发布此内容犹豫不决,但我们将非常感谢您向正确的方向发展。从我现在看来,似乎我可能需要更多地将这些数据以某种方式发布到我的服务器上?我应该调查AJAX吗?

同样,我知道这是一个真正的初学者问题,所以我正在寻找更多的方向轻微推动,而不是给我一块我需要使用的代码。

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

您需要做的事情分为两部分:

  1. 将JSON发送到服务器。

  2. 将JSON解码为PHP“关联数组”。

  3. 第一部分可以通过提交表单或使用ajax将POST发送到服务器来完成。 如果您没有使用任何库,则使用XMLHttpRequest来执行此操作,但所有主要的JavaScript库都具有便利功能,以使其更容易。由于将JSON字符串发送到服务器的最简单方法是使用标准的多部分表单数据编码,因此请务必使用encodeURIComponent对JSON字符串进行编码。例如:

    var xhr = new XMLHttpRequest(); // Older browers may need some special handling when creating the object
    xhr.open("POST", "/path/to/your/page");
    xhr.send("jsondata=" + encodeURIComponent(yourJsonString));
    

    由于您已经说过要使用jQuery,因此可以使用ajax将数据发布到服务器:

    $.ajax({
        url:     "/path/to/your/page.php",
        type:    "POST",
        data:    {jsondata: yourJsonString},
        success: function(data) {
            // Handle successful post here, use `data` if your PHP
            // page sends a reply
        },
        error:   function() {
            // Handle error here
        }
    });
    

    第二部分(接收JSON并对其进行解码)是通过接受POST变量(上面的jsondata)并通过json_decode对其进行解码来完成的。