在Form中修改JSON并通过jQuery回发

时间:2014-10-08 07:31:22

标签: php jquery arrays json

我使用以下代码通过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中传递它。

1 个答案:

答案 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>