0

我有一个从谷歌自定义搜索 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 tag() 结束之前使用波纹管代码

<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>  

但在另一个文件中,它说变量是未定义的。似乎变量没有传递给“b.php”文件

谁能告诉我该怎么做?

4

1 回答 1

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>
于 2012-08-13T11:29:54.557 回答