parseJSON не работает в ajax

-1

Я пытаюсь сделать ajax, а затем вернуть данные json в Wordpress.

Мой 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');
            }),
        });

Мой Джонсон:

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

Я не могу распечатать титуло или дескрипцию с помощью alert или console.log...

Ура!

  • 0
    Вы получили значение JSON в тревоге?
  • 0
    Отправленный вами json не является допустимой строкой JSON
Показать ещё 5 комментариев

3 ответа

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 не работает ... Это идет к ошибке ...
  • 0
    @ davidcm86 Тогда ваш JSON недействителен. Изменение на HTML только заставляет это работать, потому что недопустимая строка json все еще считается допустимой строкой html. Пожалуйста, прочитайте фактическое сообщение об ошибке, которое передается вам в обратном вызове ошибки.
Показать ещё 1 комментарий
0
$.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');
        }),
    });
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');
    }),
});
  • 0
    Если я поставлю этот код, я никогда не увижу предупреждение, я не знаю, почему ... и я не получаю никакой ошибки, все в порядке, все в порядке, но код не продолжается.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню