0

Google カスタム検索 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 配列に保存されます
今、チェックボックスでそれらを表示し、ユーザーがそれらを選択できるようにします。
選択したサイトのリンク (pageLink 変数) を取得し、それを POST メソッド
を使用して別のファイルに渡す必要があります

<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 に答える