2013-05-26 51 views
2

我在使用UL LI列表和JSON和JSON創建菜單時遇到了問題。 這裏是我的JFiddle:使用JQuery和JSON外部文件從UL列表中創建菜單

http://jsfiddle.net/TqcEs/

$.getJSON('http://www.speedyshare.com/zr6HF/download/doc22.json', function (data) { 

    //$("body div#content").html(makeUL(data.menu[0])); 
    $("body .menu ").html(makeUL(data.menu)); 

}); 
//$("body div#content").html("</li></ul>"); 

function makeUL(lst) { 
    var html = []; 
    //html.push("<div class=sub"+count+">"); 
    html.push("<ul>"); 
    count++; 
    $(lst).each(function() { 
     html.push(makeLI(this)); 
    }); 
    html.push("</ul>"); 
    //html.push("</div>"); 
    return html.join("\n"); 

} 

function makeLI(elem) { 
    var html = []; 

    html.push("<li >"); 

    //html.push(elem.name); 
    if (elem.link) 
    //html.push("<div class=item"+count2+">"); 
    html.push("<a>" + elem.link + "</a>"); 
    //html.push("</div>"); 
    count2++; 

    if (elem.sub) html.push(makeUL(elem.sub)); 
    html.push("</li>"); 
     // 
     return html.join("\n"); 

} 

在$ .getJSON目前是直接鏈接到JSON文件,但他並沒有在工作的jsfiddle(我不知道爲什麼),與外部文件在硬盤上,工作良好。

好吧,我願做類似的菜單,如在此的jsfiddle:從我的JSON文件

http://jsfiddle.net/65R8q/31/,但隨着數據。我在很多方面嘗試過div,但仍然無法正常工作。 : -/

有人知道我在哪裏犯錯誤?

+1

[**同源策略**](http://en.wikipedia.org/wiki/Same_origin_policy)! – adeneo

回答

1

由於adeneo評論,這是由於相同的原產地政策。製作Ajax代碼時需要使用JSONPcallback=?參數添加到URL呼叫:

$.getJSON('http://www.speedyshare.com/zr6HF/download/doc22.json?callback=?', function (data) { 

    //$("body div#content").html(makeUL(data.menu[0])); 
    $("body .menu ").html(makeUL(data.menu)); 

}); 

http://jsfiddle.net/TqcEs/1/

但您所請求的頁面是HTML,而不是JSON數據,所以語法/ JavaScript錯誤拋出。