Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在表单中修改JSON并通过jQuery发回_Php_Jquery_Arrays_Json - Fatal编程技术网

Php 在表单中修改JSON并通过jQuery发回

Php 在表单中修改JSON并通过jQuery发回,php,jquery,arrays,json,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

我使用以下代码通过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>

$(文档).ready(函数(){
$('.btn')。单击(函数(){
var clickBtnValue=$(this.val();
var ajaxurl='ajax.php',
数据={'action':单击BtnValue};
$.post(ajaxurl、数据、函数(响应){
//这里是反应组。
警报(“保存的数据”);
});
});
});

现在我的问题是,如何使用表单中的更新信息修改现有数组,以及如何在jQuery脚本的$.post中传递它。

根据您的解释,您已经用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>

$(文档).ready(函数(){
$('.btn')。单击(函数(){
var ajaxurl='ajax.php',
数据=$('form')。序列化();
$.post(ajaxurl、数据、函数(响应){
//这里是反应组。
警报(“保存的数据”);
});
});
});
现在,在ajax.php中,您可以使用用户修改的数据。 如果JavaScript不能像这样工作:< /P>,您也可以考虑使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>

$(文档).ready(函数(){
$('form')。提交(函数(事件){
event.preventDefault();
$.ajax({
url:$(this.attr('action');
方法:$(this.attr('method');
数据:$(this).serialize();
成功:功能(响应){
//这里是反应组。
警报(“保存的数据”);
}
});
});
});
HTML

<form action="ajax.php" method="post">
   ...
</form>

...