将带有http帖子和其他数据的JSON发布到php页面

时间:2016-08-29 23:56:22

标签: php

我有一个php页面,我希望能够提交一个JSON字符串,以及其他一些字段(http post),所以我可以做一些服务器端的PHP工作。由于我是PHP的新手,我看到很多方法都可以做到这一点,但有些方法并没有按照我想要的方式工作,因为我想发布到实际的页面本身,所以它可以做一些后端的在继续之前,很多会话数据,页面特定数据取决于页面来自哪里等。因此,AJAX是不可能的。

我的JSON字符串是使用JSON.stringify在我创建的对象数组中使用javascript创建的。现在我只使用..输出我的JSON。

var output = JSON.stringify(objectTable);
console.log(output);

JSON完全没有问题。我在页面上还有一些输入字段,我需要回发。到目前为止(在我需要发送JSON之前)我一直在做......

<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" onsubmit="return validateData()" method="post">

    <input type="text" id="itemName" value="page1" />
    <input type="text" id="itemColor" value="red" />

    <input type="submit" value="submit">
</form>

这当然可以很好地完成,但是现在有了JSON,如果我应该做其他事情,我会开始变得更好吗?我知道我可以创建一个然后当我的javascript运行并执行JSON.stringify时,然后将输入值设置为JSON。然而,这些似乎有点&#34;便宜&#34;对我来说似乎不是最好的做法。我还担心,如果出现特殊字符问题或任何问题,这种方法是否有任何缺陷?我应该采用不同的,更合乎逻辑的或专业的方式吗?

1 个答案:

答案 0 :(得分:1)

简单,工作,Totaly好的方法

因此,如果objectTable对象需要与表单中的其他数据同时发送到同一个PHP脚本,那么只需在表单中创建一个隐藏字段,当用户点击提交时,设置对象的隐藏值。

<input id='secretSHhhhhh' type='hidden' value='false'>

然后在JS(我使用一些jQuery表示法因为我很懒)。

$('form').on('submit',function() {
    /* ... stuff ... */
    $('#secretSHhhhhh').val(JSON.stringify(objectTable));
});

否则,如果您想将json编码对象发送到独立于表单的PHP脚本,那么我建议使用ajax。我再次使用jQuery因为它很容易,特别是对于ajax。在这种情况下,我使用的是ajax的post子集,但jQuery库中还有更多选项。

$.post("somePage.php", objectTable,function( stuffThePageReturned ) { // No need to stringify
    console.log(stuffThePageReturned);
});

我的首选方法

$('form').on('submit',function(e) {
    e.preventDefault();
    var PostData = {};
    PostData.itemName = $('#itemName').val();
    PostData.itemColor = $('#itemColor').val();
    // === Any extra fills from input elements === //
    PostData.objectTable = objectTable;

    $.post("somePage.php", PostData,function( stuffThePageReturned ) {
        console.log(stuffThePageReturned);
    });
});