2012-11-02 46 views
1

你好我創建一個簡單的網站只用HTML/CSS和Javascript,因爲我不能使用服務器端語言(服務器不支持),現在我創造我的網站使用jQuery路由/ AJAX,甚至以我低的Javascript知識,我設法創造最多。但我無法找到如何從我的JSON文件中獲取正確的索引。的jQuery/AJAX路由使用JSON

JSON文件如下:

{ 
    "home": { 
     "pattern": "/home", 
     "target": "home.html" 
    }, 
    "webshop": { 
     "pattern": "/webshop", 
     "target": "webshop.html" 
    } 
} 

而且,我在我的index.html使用像jQuery的:

<script type="text/javascript"> 
$(document).ready(function() { 
//wacht op laden pagina 

$.ajax({ 
    url: 'routing.json', 
    async: false, 
    dataType: 'json', 
    success: function (response) { 
    // do stuff with response. 
    var nav = $('.nav_menu ul'); 

    $.each(response, function(route) { 
     for(var i=0;i<route.length;i++){ 
     console.log("route["+i+"] is =>"+route[i]); 
    } 
     nav.append('<li><a href="index.html/#/' + route + '">' + route + '</a></li>'); 

    }); 

    } 

}); 

}); 
</script> 

現在的問題是,在我的jQuery的一部分,我不要; t知道如何創建正確的鏈接(請參閱路線)

nav.append('<li><a href="index.html/#/' + route + '">' + route + '</a></li>'); 

回答

2

不知道爲什麼你有進一步的for循環在$.each()。沒有必要。相反,嘗試

$.each(response, function(id,route) { 
    nav.append('<li><a href="index.html/#/' + route.target + '">' + route.pattern + '</a></li>'); 
}); 
+0

這就是我一直在尋找的感謝! :) – Reshad

+0

你是否也意外知道如何將正確的鏈接加載到div中?我試過$(「。main_content」)。load(this.target);但沒有結果 – Reshad

+0

創建另一個問題,不要混合起來 – Abhilash

0

您正在對待JavaScript對象年。爲什麼不使用數組呢?

[ 
{ "route": "home", "pattern": "/home", "target": "home.html" }, 
{ "route": "webshop", "pattern": "/webshop", "target": "webshop.html" } 
] 

$.each(response, function(i, routeInfo) { 
    nav.append('<li><a href="index.html/#/' + routeInfo.route + '">' + routeInfo.route + '</a></li>'); 
}); 

UPDATE

其實,從Abhilash答案讓你的結構。你的問題是你的$.each()簽名沒有考慮到第一個參數是索引,第二個參數是集合中的項目。我假設你需要路線的名字,而不是目標,所以我就這樣回答了我的做法。如果你不需要它,那麼Abhilash的答案會更好(恕我直言),因爲它會保持你的結構。

+0

嗯,但沒有什麼區別吧?我發現這種方式與JSON好得多,因爲它看起來有組織 – Reshad

+0

我打錯了'$ .each'函數的簽名....第一個參數是索引,第二個參數是集合中的項目。 –

1

例的Json

"yyyList": [ 
     { 
      "Id": "1", 
      "Name": "aaaa " 
     }, { 
      "Id": "2", 
      "Name": "bbb " 
     }, { 
      "Id": "6", 
      "Name": "ccc " 
     }, { 
      "Id": "7", 
      "Name": "ddd " 
     } ] 


$.ajax({ 
       url: "URL", 
       //data: "", 
       type: "GET", 
       dataType: 'json', 
       success: function (data) {    
       $.each(data.YYYList, function() { 
        $('#state').append('<'li value='+this.Id+'>'+this.Name+'<'/li>'); 
       }); 
      } 
     }) 

$( '#狀態')--->給出的HTML標籤UL相同的ID,請做出正確的選擇它的語法

0

我認爲問題是你把它看作更像一個數組,但實際上它是一個對象。試試這個:

$.each(response, function(route) { 
    console.log(response[route]) 
    nav.append('<li><a href="index.html/#/' + response[route].target + '">' + response[route].pattern + '</a></li>'); 
}); 
0

如果你正在得到一個JSON響應,你可以用$.parseJSON()把它變成一個實際的對象。

試着這麼做:

$.ajax({ 
    url: 'routing.json', 
    async: false, 
    dataType: 'json', 
    success: function (response) { 
    // do stuff with response. 
    var nav = $('.nav_menu ul'); 

    var obj = jQuery.parseJSON(response); 
    for(var ele in obj){ 
     nav.append('<li><a href="index.html/#/' + obj[ele].target + '">' + obj[ele].pattern + '</a></li>'); 
    } 

    } 

});