来自PHP的AJAX值返回为未定义的JSON

时间:2014-05-25 23:36:59

标签: php ajax json

我有AJAX脚本通过PHP更新数据库。

然后我尝试将两个变量返回到AJAX成功函数。

目前,在提醒所返回的数据时,他们会显示UNDEFINED

当我返回JSON而没有说明我需要的数组部分时,数组显示完整。但是只有当我特别说明我希望使用的数组中的哪个值时,我似乎对这两个值都没有定义。

How should I manage these values returned from the PHP?

AJAX

success: function(data) {
    $('#'+data.toUpdate).html(data.quant);
    $('#'+data.toUpdate).addClass('updated_grn');
    alert('quant:' + data.quant + '\nid:' + data.toUpdate);  
}

PHP

if ($query) {
    echo json_encode(array("toUpdate" => $toUpdate, "quant" => $quant));
}

结果

Ajax returns Undefined

当我alert(data)返回时:

Returned data

完整的php

$itemid   = ($_POST['itemid']);
$quant    = ($_POST['quant']);
$toUpdate = ($_POST['toUpdate']);

$sql = "UPDATE items_list
        SET `stock_level` = '$quant'
        WHERE item_id = '$itemid'";

$query = mysql_query($sql);

if ($query) {
    echo json_encode(array("toUpdate" => $toUpdate, "quant" => $quant));
}

完整的AJAX

$.ajax({
    type:     'POST',
    url:      url,
    dataType: 'html',
    data: {
        itemid:   itemid,
        quant:    quant,
        toUpdate: toUpdate
    },
    beforeSend: function() {
        $('#'+id+'_num')
            .html("<img src='xxxxxxx.com/home/secure/images/gif/ajax-loader.gif'></img>");
    },
    success: function(data) {
        alert(data);
        //  $('#'+data.toUpdate).html(data.quant);
        //  $('#'+data.toUpdate).addClass('updated_grn');
        //  alert('quant:' + data.quant + '\nid:' + data.toUpdate);
    }
});

3 个答案:

答案 0 :(得分:2)

只需将dataType: 'html'更改为dataType: 'json':)

答案 1 :(得分:0)

确保$query为真。我也会做die()所以输出中没有别的东西:

 if ($query) {
    die(json_encode(array("toUpdate" => $toUpdate, "quant" => $quant)));
}

您可以随时查看 PHP

的内容
success: function(data) {
        alert(data);
        $('#'+data.toUpdate).html(data.quant);
        $('#'+data.toUpdate).addClass('updated_grn');
        alert('quant:'+data.quant+'\nid:'+data.toUpdate);  
}

答案 2 :(得分:0)

FYI。 我在使用WordPress(4.3.1)并尝试将json数据加载到WordPress内的D3.json函数时发现了这个问题。 json_encode(some_array)不起作用但返回undefined。它返回一个整数值,但不返回任何数组。 UTF-8检查或其他任何内容都无济于事。

然后我不自觉地用wp_die()命令关闭了php ajax函数,它在那里丢失了。瞧!,这突然起作用,json_encode返回数组。

希望这有助于某人。