保存通过Ajax返回的信息后出现$_POST错误


$_POST error after saving information that was returned via Ajax

PHP$_POST有问题。然后我保存信息并检查$_POST['g_kcal'];返回

Notice: Undefined index: g_kcal in

此字段g_kcal计数输入更改后的所有输入字段值。它通过ajax返回名称为"g_kcal"的新输入。

JavaScript:

$('.box-body').change(function(){
    var totalPointsKcal = 0;
    $(this).find('input[name="kcal[]"]').each(function(i,n){
        totalPointsKcal += parseFloat($(n).val(),10); 
    });
    $.ajax({
        type: 'post',
        url: 'ajaxLoader.php',
        data: {
            galutinis_kcal:totalPointsKcal,
        },
        success: function (response) {
            document.getElementById("galutinis").innerHTML=response;
        }
    });
});

ajaxLoader.php:

if(isset($_POST['galutinis_kcal'])) {
    $kcal = $_POST['galutinis_kcal'];
    echo "<input class='skaiciuokle kcal1' type='text' name='g_kcal' value=". round($kcal, 1) ." disabled>";
} 

找不到他们的问题是。也许POST无法接收通过ajax发送的信息?

尝试在Ajax POST:中设置内容类型

$.ajax({
    type: 'post',
    url: 'ajaxLoader.php',
    data: {
        galutinis_kcal:totalPointsKcal,
    },
    contentType: "application/json",
    success: function (response) {
        document.getElementById("galutinis").innerHTML=response;
        $('.kcal1').trigger('change');
    }
});

如果不设置Ajax调用的内容类型,则不会发送正文(数据)。

在服务器端使用此代码获取通过AJAX请求发送的数据:

$info = json_decode(file_get_contents("php://input"));
if(isset($info->galutinis_kcal)){
    $kcal = $info->galutinis_kcal;
    echo "<input class='skaiciuokle kcal1' type='text' name='g_kcal' value=". round($kcal, 1) ." disabled>";
}

在客户端,在发送请求之前使用JSON.stringify

$.ajax({
    type: 'post',
    url: 'ajaxLoader.php',
    data: JSON.stringify({
        galutinis_kcal:totalPointsKcal
    }),
    success: function (response) {
        document.getElementById("galutinis").innerHTML=response;
    }
});

问题是输入字段设置为DISABLE。现在它工作得很好