2017-11-13 4 views
0

2つのHTMLページがあります。クエリ文字列を使用して1ページから別のページにデータを渡したいとします。私はこの方法を試しましたが、うまくいかず、何が問題になるかもしれません。クエリ文字列を使用して1ページから別のページにデータを送信

$(function() { 
 
    $("#btnQueryString").bind("click", function() { 
 

 
    var pack = document.getElementById('pack-val').value; 
 
    var info = document.getElementById('info').value; 
 

 
    var url = "packages-style-1.html?&pack=" + pack + "&download=" + info; 
 
    window.location.href = url; 
 
    }); 
 
    }); 
 

 
\t var queryString = new Array(); 
 
     $(function() { 
 
\t \t if (queryString.length == 0) { 
 
\t \t  if (window.location.search.split('?').length > 1) { 
 
\t \t  var params = window.location.search.split('?')[1].split('&'); 
 
\t \t  for (var i = 0; i < params.length; i++) { 
 
\t \t   var key = params[i].split('=')[0]; 
 
\t \t   var value = decodeURIComponent(params[i].split('=')[1]); 
 
\t \t    queryString[key] = value; 
 
\t \t  } 
 
\t  } 
 
    \t  } 
 
      if (queryString["pack"] != null && queryString["download"]) { 
 
       var data = "<u>Values from QueryString</u><br /><br />"; 
 
       pack += "<b>Pack:</b> " + queryString["pack"] + " <b>Download:</b> " + queryString["info"]; 
 
       $("#lblData").html(data); 
 
      } 
 
    \t });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<table class="at-intenet-package" id="pack"> 
 
    <thead></thead> 
 
\t <tbody> 
 
\t <tr> 
 
\t \t <td class="at-int-speedname" id="pack-val"> 
 
\t \t \t <h2 class="at-IntHdr">Value Pack</h2> 
 
\t \t \t <ul> 
 
\t \t \t <li><b>768Kbps</b> Download Speed</li> 
 
\t  \t   <li><b>384Kbps</b> Upload Speed</li> 
 
\t \t \t </ul> 
 
\t \t </td> 
 
\t \t <td class="at-int-dl1"> 
 
\t \t <h2 class="at-IntHdr">6.2<span class="time-sep">hrs</span></h2> 
 
\t \t \t <span class="todownload">to download*</span> 
 
\t \t </td> 
 
\t \t <td class="at-int-dl2"> 
 
\t \t <h2 class="at-IntHdr">55<span class="time-sep">min</span></h2> 
 
\t \t <span class="todownload">to download*</span> 
 
\t \t </td> 
 
\t \t <td class="at-int-dl3"> 
 
\t \t \t <h2 class="at-IntHdr">11<span class="time-sep">min</span></h2> 
 
\t \t \t <span class="todownload">to download*</span> 
 
\t \t </td> 
 
\t \t <td class="at-int-price" id="info"> 
 
\t \t \t <h2 class="at-IntHdr"><span>$</span>17.95<span class="per-month"> per mon*</span></h2> 
 
\t \t \t <span class="check-info">12 Month Pricing<br>No Contract Required<br>Equipment Priced Separately</span> 
 
\t \t </td> 
 
\t \t <td class="at-int-check"><a href="check.html" id="btnQueryString" class="at-int-btn dark-btn">Check Availability</a></td> 
 
\t \t </tr> 
 
    </tbody> 
 
    </table>

私は、データが別の私が最初たいページと最後の情報に送信空き状況を確認する]ボタンをクリックしてください。

画像1: enter image description here

画像2:送信されたデータの後のp/oを期待。

enter image description here

+0

このアプローチでは、 'jquery/js'を使用してページ間で値を渡すことはできません。代わりに 'localstorage'を使用してください。 –

+0

詳細を説明してください。 –

+0

'.value'プロパティはどうやって取得していますか? ''のようなフォームコントロールはありません。あなたのコードは、 'info'や' pack-val'では動作しません。 2番目のページに転送する実際の変数に名前を付けます。 * "私はこの方法で試しましたが、うまくいかない、..." *あなたが試したことを正確に説明してください。私が見ているのは、そのHTMLとよく一致しないjQueryのペーストです。ところで、 'queryString ['pack']'と 'queryString ['info']'は配列の構文が間違っていますが、オブジェクトリテラルは正しいです。 – zer00ne

答えて

0

あなたがパック-VALおよび情報要素の内容を取得しようとしている表示されます。あなたがやっているようにwindow.location.hrefを設定している限り、クエリ文字列パラメータを別のページに送ることができます。しかし、私はあなたのpack-valとinfoの値は常に「未定義」と考えています。

これらの要素のHTMLコンテンツを次のページに送信しようとしていますか?もしそうなら、あなたはエスケープしてコンテンツをエスケープする必要があり、一般に、htmlコンテンツをクエリ文字列として前後に渡すのは良くありません。

パッケージの詳細を配列または変数に格納し、選択したパッケージキーを前後に渡すほうがよいでしょう。

+0

私のコードを使って、どうやって説明しましょうか。 –

関連する問題