我有一个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;对我来说似乎不是最好的做法。我还担心,如果出现特殊字符问题或任何问题,这种方法是否有任何缺陷?我应该采用不同的,更合乎逻辑的或专业的方式吗?
答案 0 :(得分:1)
因此,如果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);
});
});