从AJAX返回变量以供以后处理

时间:2012-04-30 07:19:46

标签: jquery html ajax json global-variables

由于使用INNERHTML似乎是一个错误,我的SELECT OPTION标签变成空白(基于我能够做的研究) - 我必须弄清楚如何创建一个变量供以后使用,它包含基于以下返回的JSON数据的OPTION标记,并且没有任何乐趣;

[
{"saying":"Select a saying..."},
{"saying":"I rock the camera!"},
{"saying":"Ask me about Holland"},
{"saying":"I'm with the Photographer!"},
{"saying":"I'd love to frame you!"}
]

下面是我的两个核心函数(函数加载列表和函数()),后者是将启用选择标记的填充并将参数传递给第一个然后从mysql DB获取数据的函数。 {注意:select标签适用于我今天的代码,如果仅在html文件的主体内,它只在INNERHTML中并使用document.getElementById它失败。

我在IE,FireFox,Safari和Chrome上试过这个。我为什么要这样做?我正在努力创建一个模态弹出窗口,其中包含许多可选择的T恤选项,并根据这些选项指导您通过选择语句等。如果INNERHTML可行,我会完成,因为它更改了DIV的预期除了我的SELECT标签。

工作代码: ......

<div id='target' class="target">
<p>in the div</p>
<p><select id="say1" name="say1" onchange="custom(this.id)" size="1"></select></p>
</div> 

.......

不工作代码: .........

    {
    div = document.getElementById('target'); 
    str = '<select id="say1" name="say1" onchange="custom(this.id)" size="1"></select>';
    div.innerHTML = str; 
    }

..............

/*function to load a list*/
function loadlist(selobj,url,nameattr)
{


 $(selobj).empty();
    $.getJSON(url,{ data: 123, t: (new Date()).getTime() },function(data) {
        $.each(data, function(i,obj)
            {
                $(selobj).append(
                    $('<option></option>')
                        .val(obj[nameattr])
                        .html(obj[nameattr]));
            });
    });
}

    $(function()
    { 
       //By default, jQuery will load from cache if the request is same
       loadlist($('select#colour').get(0), 'getcolours.php?getlist=colour','colour');
       loadlist($('select#saying').get(0), 'getsaying.php?getlist=adultsaying','saying');
   loadlist($('select#say1').get(0), 'getsaying.php?getlist=adultsaying','saying');
    });

社区的帮助是告诉我在我的loadlist函数中我编写了将JSON数据返回到以后可以使用的变量的能力,理想情况下添加打开和关闭的OPTION标记?

我对其中的一些人有点新意,因为我必须完成这个项目,所以概念正在逃避我,提前感谢。

1 个答案:

答案 0 :(得分:0)

您需要至少一个选项才能使onchange功能正常工作

 div = document.getElementById('target'); 
    str = '<select id="say1" name="say1" onchange="custom(this.id)" size="1"><option value="1">1</option><option value="2">2</option></select>';
    div.innerHTML = str;