如何通过ajax更新js对象类型变量?

时间:2011-08-26 06:25:49

标签: javascript jquery

我在 php

中创建 javascript变量

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代码又有效了吗?

3 个答案:

答案 0 :(得分:1)

您的AJAX请求的类型为dataType: 'text', 将其更改为JSON:)

答案 1 :(得分:1)

好吧,看看你的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”。这将把引入的数据转换为常规的'ol对象,就像你已经拥有的那样。

答案 2 :(得分:1)

使用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);
    }
});