parseJSON在ajax中不起作用

时间:2015-05-20 12:40:13

标签: javascript jquery ajax json wordpress

我尝试在Wordpress中执行ajax然后返回json数据。

我的Ajax是:

$.ajax({
            type: "POST",
            dataType : 'html',
            url: "/wp-content/themes/myproject/ajax/otros_alojamientos.php",
            data: { 
                idPost: '<?php echo $ID; ?>'
            },
            success: (function(data) {
                alert(data); // this is my json
                var a = $.parseJSON(data);
                alert(a.titulo); // there is not nothing here. Undefined.
            }),
            error: (function(data) {
                console.log('Error alojamientos');
            }),
        });

我的Json回来了:

string(50) "{"titulo":"aaatitle","descripcion":"bbbdescription"}"

我无法使用alert或console.log来打印titulo或descripcion ...

干杯!

3 个答案:

答案 0 :(得分:1)

更改您的数据类型参数

    $.ajax({
        type: "POST",
        dataType : 'json',
        url: "/wp-content/themes/myproject/ajax/otros_alojamientos.php",
        data: { 
            idPost: '<?php echo $ID; ?>'
        },
        success: (function(data) {
            alert(data.titulo); // data is parsed as Json by jQuery
        }),
        error: (function(data) {
            console.log('Error alojamientos');
        }),
    });

你也应该检查你的错误回调函数参数(它不会期望数据作为第一个参数)

答案 1 :(得分:0)

您收到的回复既不是有效的json也不是有效的html。因此,要么删除dataType,要么必须解析它,或者只添加dataType:"json"但在您的情况下不是有效的json

所以我想告诉你应该使用dataType:"text"然后你可以解析它:

$.ajax({
    type: "POST",
    dataType : 'text',
    url: "/wp-content/themes/myproject/ajax/otros_alojamientos.php",
    data: { 
        idPost: '<?php echo $ID; ?>'
    },
    success: (function(data) {
        var json = data.split(' ')[1]; // gets you the json string
        var validJson = $.parseJSON(json); // parses as valid json
        alert(validJson.titulo);
    }),
    error: (function(data) {
        console.log('Error alojamientos');
    }),
});

答案 2 :(得分:-1)

$.ajax({
        type: "POST",
        url: "/wp-content/themes/myproject/ajax/otros_alojamientos.php",
        data: { 
            idPost: '<?php echo $ID; ?>'
        },
        success: (function(data) {
            alert(data); 
            var a = JSON.parse(data);
            alert(a.titulo); 
        }),
        error: (function(data) {
            console.log('Error alojamientos');
        }),
    });