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

时间:2016-04-12 16:23:39

标签: javascript php jquery html 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发送的信息?

3 个答案:

答案 0 :(得分:0)

尝试在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通话的内容类型,则不会发送正文(数据)。

答案 1 :(得分:0)

在服务器端使用此代码获取通过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;
    }
});

答案 2 :(得分:0)

问题是输入字段设置为DISABLE。现在它工作正常