我使用以下代码通过PHP获取一些JSON数据:
$sURL = "https://SOMEURL";
$aOptions = array(
'http' => array(
'header' => "Content-type: application/json",
'method' => 'POST',
),
);
$sContext = stream_context_create($aOptions);
$sResult = file_get_contents($sURL, false, $sContext);
$aItems = json_decode($sResult, true);
foreach($aItems as $key=>$value)
{
if ($key == "data")
{
foreach ($value as $arritem => $arrcont)
{
foreach ($arrcont as $subarritem => $subarrcont)
{
if ($subarrcont['ItemId'] == $sItemID)
{
$aItem = $subarrcont;
}
}
}
}
}
所以最后我有一个数组$ aItem,其中包含所有JSON信息,如下所示:
(
[ItemId] => consumable_item_1
[ItemClass] => Consumables
[CatalogVersion] => 1
[DisplayName] => Consumable Item 1
[Description] => Item demonstrating usage-based consumables
[VirtualCurrencyPrices] => Array
(
[VC] => 500
)
[Consumable] => Array
(
[UsageCount] => 3
)
)
现在,我有一个HTML / PHP表单,其中这些数据填写在文本框中,他们可以修改它们。 它们也可以填充一些空的文本框,因为这个数组例如没有可能具有的所有信息(例如,可能有另一个数组或第二个ID)。
我在页面底部有这个代码,当你点击一个按钮时执行一个PHP脚本。
<script>
$(document).ready(function(){
$('.btn').click(function(){
var clickBtnValue = $(this).val();
var ajaxurl = 'ajax.php',
data = {'action': clickBtnValue};
$.post(ajaxurl, data, function (response) {
// Response div goes here.
alert("Data saved");
});
});
});
</script>
现在我的问题是,如何使用表单中的更新信息修改现有数组,以及如何在jQuery脚本的$ .post中传递它。
答案 0 :(得分:0)
从您的探索来看,您已经用PHP数据填充了HTML表单。在用户完成数据(修改或不修改)之后,您必须将thas数据发送回PHP脚本(ajax.php)以处理此问题,而不是像目前为止那样仅发送按钮的值应该像这样发送整个表格:
<script>
$(document).ready(function(){
$('.btn').click(function(){
var ajaxurl = 'ajax.php',
data = $('form').serialize();
$.post(ajaxurl, data, function (response) {
// Response div goes here.
alert("Data saved");
});
});
});
</script>
现在,在您的ajax.php中,您可以使用用户修改的数据。 如果javascript不能正常工作,你也可以考虑使你的ajax函数可以回退:
<强>的Javascript 强>
<script>
$(document).ready(function(){
$('form').submit(function (event){
event.preventDefault();
$.ajax({
url: $(this).attr('action');
method: $(this).attr('method');
data: $(this).serialize();
success: function (response) {
// Response div goes here.
alert("Data saved");
}
});
});
});
</script>
<强> HTML 强>
<form action="ajax.php" method="post">
...
</form>