У меня есть переменная javascript , созданная в php

echo "var".$locallist."=".create_js_variable($locallist,$db2_list_all,'db2');

И это выглядит в исходном коде html-страницы как

var locallist={
  'CARINYA':[['2011-08-24-09-22 - w','20110824092216w'],['2011-08-18-13-15','20110818131546']],
  'COVERNAN':[['2011-03-02-12-28','20110302122831']],
  'DAVID':[['2010-12-22-19-43','20101222194348'],['2010-12-08-14-10','20101208141035']]};

Теперь я хочу обновить переменную при нажатии кнопки через ajax

    jQuery.ajax({
        type: 'get',
        dataType: 'text',
        url: url,
        data: {
            what: 'db2list', 
            t: Math.random() 
        },
        success: function(data, textStatus){
            locallist = data;                   
            console.log(locallist);
        }
    });

И ajax вызывает этот код php (обратите внимание, что вызывается та же функция php)

if($what == 'db2list') {
    $db2_list_all = get_db2_database_list();
    echo create_js_variable($locallist,$db2_list_all,'db2');
}

Console.log сообщает, что

  • перед обновлением переменная является объектом
  • после обновления это текст

Как я могу это исправить? Значит, мой другой код javascript снова работает?

0
Radek 26 Авг 2011 в 10:25

3 ответа

Лучший ответ

Что ж, посмотрите на свой вызов ajax:

jQuery.ajax({
    type: 'get',
    dataType: 'text',
    url: url,
    data: {
        what: 'db2list', 
        t: Math.random() 
    },
    success: function(data, textStatus){
        locallist = data;                   
        console.log(locallist);
    }
});

Заметили, что у вас dataType в виде текста? Он будет вводить данные и обрабатывать их как текст. Попробуйте изменить dataType на json. Это преобразует данные, которые были внесены в обычный объект, точно так же, как у вас уже есть.

1
Stephen 26 Авг 2011 в 06:32

Ваш AJAX-запрос имеет тип dataType: 'text', Поменяйте его на JSON :)

1
ChrisH 26 Авг 2011 в 06:30

Используйте dataType: 'json'.

jQuery.ajax({
    type: 'get',
    dataType: 'json',
    url: url,
    data: {
        what: 'db2list', 
        t: Math.random() 
    },
    success: function(data, textStatus){
        locallist = data;                   
        console.log(locallist);
    }
});
1
pricco 26 Авг 2011 в 06:33