2012-08-12 67 views
0

我從谷歌定製搜索API需要數據的代碼,有沒有搞錯與自定義搜索API部分取得的數據,它沒有任何錯誤檢索數據如何把來自谷歌自定義搜索API以複選框列表

<html> 
    <head> 
    <title>JSON Custom Search API Example</title> 
    </head> 
    <body> 
    <div id="content"></div> 
    <script> 
    var pageName = new Array(); 
    var pageLink = new Array(); 
    var pageDetails = new Array(); 

     function hndlr(response) { 
     for (var i = 0; i < response.items.length; i++) { 
     var item = response.items[i]; 

     pageName[i] = item.title; 
     pageLink[i] = item.link; 
     pageDetails[i] = item.htmlSnippet; 

     } 
    } 

    // Some codes 

    var search_query = 'https://www.googleapis.com/customsearch/v1?key=MY_KEY&cx=XXXXXXXXX&q='+query+'&start=1&callback=hndlr'; 
    s = document.createElement('script'); 
    s.src = search_query; 
    document.getElementsByTagName('head')[0].appendChild(s); 
    </script>  
    </body> 
</html> 

所需數據保存在pageName,pageLink和pageDetails數組中。
現在我想顯示它們與chechboxes,並允許用戶選擇它們。
我需要所選網站的鏈接(pageLink變量),並使用POST方法
我試着用波紋管代碼只)body標籤的結束(

<form action="b.php" method="post"> 
<script> 
for (var j = 0; j < 5; j++) { 
document.write("<input type='checkbox' name='formDoor[]' id='"+j+"' value= '' />"+pageName[j]+"<br />"); 
document.getElementById(j).value = pageLink[j]; 
} 
</script> 
<input type="submit" name="formSubmit" value="Submit" /> 
</form> 

但在之前將它傳遞給anothe文件另一個文件,它說變量是未定義的。似乎變量不傳遞給'b.php'文件

任何人都可以請告訴我如何做到這一點?

回答

0

您當前添加複選框的代碼可能會在搜索結果到達之前執行(即:在執行hndlr之前),因此所有數組仍爲空。解決方案是將複選框創建代碼移動到hndlr函數中。

這是固定頁面。

<html> 
    <head> 
    <title>JSON Custom Search API Example</title> 
    </head> 
    <body> 
    <div id="content"></div> 

    <form id="bform" action="b.php" method="post"> 
     <input type="submit" name="formSubmit" value="Submit" /> 
    </form> 

    <script> 
    var pageName = new Array(); 
    var pageLink = new Array(); 
    var pageDetails = new Array(); 

    function hndlr(response) { 
     var f=document.getElementById('bform'), prev=f.children[0]; 
     for (var i = 0; i < response.items.length; i++) { 
     var ele, item = response.items[i]; 

     pageName[i] = item.title; 
     pageLink[i] = item.link; 
     pageDetails[i] = item.htmlSnippet; 

     ele = document.createElement('BR'); 
     f.insertBefore(ele, prev); 
     prev = ele; 

     ele = document.createTextNode(pageName[i]); 
     f.insertBefore(ele, prev); 
     prev = ele; 

     ele = document.createElement('INPUT'); 
     ele.type = 'checkbox'; 
     ele.name = 'formDoor[]'; 
     ele.id = i; 
     ele.value = encodeURI(pageLink[i]); 
     f.insertBefore(ele, prev); 
     prev = ele; 
     } 
    } 

    // Some codes 

    var search_query = 'https://www.googleapis.com/customsearch/v1?key=MY_KEY&cx=XXXXXXXXX&q='+query+'&start=1&callback=hndlr'; 
    s = document.createElement('script'); 
    s.src = search_query; 
    document.getElementsByTagName('head')[0].appendChild(s); 
    </script> 

    </body> 
</html>