2012-06-24 29 views
0
在我的例子

API返回的ID,名稱對從API調用選擇選項

<categories> 
    <category id="5" name="Bollywood"/> 
    <category id="484" name="International"/> 
    ... 
    </categories> 

我想有一個下拉菜單,允許用戶從選項中選擇

<select class="action" id="categoryEvent" onchange="change(value)" style="display: block"> 
    <script type="text/javascript"> 
     var url = "http://api.hungama.com/metroapp/categories.php?format=json"; 
     var id,name; 
     var data = JSON.parse(url); 
     data.category.forEach(function (content) { 
    </script> 
    <option value="id">name</option> //id, name from api 
    <script type="text/javascript"> 
     } 
    </script> 

我在做什麼錯了?

+1

'<腳本類型= 「文/ JavaScript的」>}'....這不可能是對的。腳本元素必須擁有自己的語法有效代碼。因此,在這種情況下,您的兩個腳本元素都將被忽略。另外,'JSON.parse'解析一個字符串,它不會提出任何請求。 – Esailija

+0

這不是PHP,你不能這樣做。 –

+0

我想在我的應用程序中使用hungama API。你能告訴我獲得API訪問的過程嗎? – VickyS

回答

1

看起來這是你想要什麼:

<select class="action" id="categoryEvent" onchange="change(value)"></select> 
<script type="text/javascript"> 
    var url = "http://api.hungama.com/metroapp/categories.php?format=json"; 
    var id, name; 
    var xhr; 
    if (window.XMLHttpRequest) { 
     xhr = new XMLHttpRequest(); 
    } else { 
     xhr = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xhr.onreadystatechange = function() { 
     if (xhr.readyState == 4 && xhr.status == 200) { 
      var res = JSON.parse(xhr.responseText), 
       data = res.category; 
      for(var i = 0; i < data.length; i++) { 
       var ele = document.createElement("option"); 
       ele.value = data[i].id; 
       ele.innerHTML = data[i].name; 
       document.getElementById("categoryEvent").appendChild(ele); 
      } 
     } 
    } 
    xhr.open("GET", url, true); 
    xhr.send(); 
</script> 
+0

'JSON.parse(「http://api.hungama.com/metroapp/categories.php?format=json」)'不是任何人想要的:P – Esailija

+0

我真的不知道他在那裏做什麼...看起來像一個AJAX調用。 –

+0

他想在那裏發出一個JSONP請求,然後處理結果,這需要更多的代碼:P你不只是'JSON.parse'一些URL並使其工作。它會引發語法錯誤...... uri甚至沒有用JSONP做出響應,也沒有CORS頭文件。因此,如果這不是他的領域,那麼遊戲就會非常多。 – Esailija

0

在html文檔中,您應該在一側聲明select html元素,而在另一側聲明腳本元素。

例如:

<select class="action" id="categoryEvent" onchange="change(value)"> 
</select> 

<script type="text/javascript"> 
//manipulate the select 
var select = document.getElementById("categoryEvent"); 
var newOption = document.createElement("option"); 
select.appendChild(newOption); 
</script>