返回的数据未在源代码中显示,如何选择Ajax Loaded Data?

时间:2011-05-01 14:01:09

标签: jquery

我正在为eBay类别制作类别树选择 我有一个选择框...

<div id="div_firstCat">
    <select id="slct_firstCat" name="slct_firstCat" size="33">
        <option value="353">Antiques</option>
        <option value="550">Art</option> ... and so on..
    </select>
</div>

<div id="div_secondCat"></div>

我正在使用以下JQuery函数将数据发布到我的PHP应用程序,这将返回另一个Select框,具体取决于所选的第一个类别(上图)。

// First Level Categories
    $("#slct_firstCat").change(function(){ // On change of slct_firstCat
    var actionRequested = "AJAX_getCats";  // My personal PHP Identifer
    var url = "index.php";                 // Post to index.php
    var catId = $("#slct_firstCat").val(); // Get the CatID from the select box.

    // Post this data to PHP and return the data into #div_secondCat
    $.post(url, {AJAX_Action: actionRequested, categoryId: catId, categoryLevel: 1},
        function(data){
            $("#div_secondCat").html(data);
           });
    // End of Function getCats
    });

PHP文件返回此选择框,与上面的名称相同但名称不同。

<select id="slct_secondCat" name="slct_secondCat" size="33">
        <option value="353">Sub-Cat of Antiques</option>
        <option value="550">Sub-Cat of Antiques</option> and so on..
</select>

现在,当我尝试通过JQuery从“slct_secondCat”(通过AJAX加载选择)获取选项值时,它没有得到选项值,所以我无法进一步向下导航到猫树。

这是第二类帖子的JQuery函数。

// Second Level Categories
    $("#slct_secondCat").change(function(){
    var actionRequested = "AJAX_getCats";
    var url = "index.php";
    var catId = $("#slct_secondCat").val();

    $.post(url, {AJAX_Action: actionRequested, categoryId: catId, categoryLevel: 2},
        function(data){
            $("#div_thirdCat").html(data);
           });
    // End of Function getCats
    });

当我查看页面的源代码时,在加载了AJAX的数据之后,div_secondCat不显示源代码中的任何内容,即使div已经加载了数据,JQuery也会将数据从帖子返回到div并没有更新页面的源代码。

所以基本上,我通过eBay网络服务从我的PHP文件中获取类别,我想导航到我想要的最终类别,并能够通过JQuery选择它。

2 个答案:

答案 0 :(得分:1)

尝试

// Second Level Categories
$("#slct_secondCat").live("change", function(){

另外:点击“查看页面来源”只会显示原始HTML文档。您需要检查Firebug或Webkit Inspector以查看DOM中的实际情况。

答案 1 :(得分:1)

  

当我查看页面的源代码时,在加载AJAX之后的数据

如果您正在谈论“查看源代码”或类似内容,那是因为它会显示页面的实际来源,而不是DOM 现在的外观。为此,您需要一个合适的调试器。幸运的是,they're thick on the ground和免费。

关于为什么你没有看到change事件:你什么时候运行你的代码来连接它?因为这一行:

$("#slct_secondCat").change(...

...如果元素已经,则只会挂钩处理程序。如果没有,则处理程序不会挂起。您可以在之前创建元素的ajax调用完成后调用该函数将其挂起,或者使用live(或者更好,delegate)。

$("#slct_secondCat").live('change', ...

$("#div_secondCat").delegate("#slct_secondCat", 'change', ...

(请注意,最后一个我们在初始选择器中使用div_secondCat,然后在其上调用delegate。)