2017-07-04 17 views
0

私は新しいページに移動するために選択ボックスを使用していますが、選択ボックスに基づいて別のデータからテーブルdivデータを受け取ります。ここに私のコードはajaxを使用してdivを読み込めません

htmlページで

<select id="works" class="btn btn-default" style="text-align:left; background-color:#FFF" onchange="getboq(this)"> 
<option value=""> Select Work Name</option> 
<option value="1" style="text-align:left"><?= 1 ?> 
<option value="2" style="text-align:left"><?= 2 ?> 
</option> 
</select> 

JSファイル

function getboq(work) 
{ 
var boq = work.value; 
$.ajax({ 
      url: 'data/cont_boq.php', 
      type: 'post', 
      dataType: 'json', 
      data: { 
       boq:boq, 
      }, 
      success: function (data) { 
      window.location = 'boq.php' 
       $('#boq').html(data); 
      }, 
      error: function(){ 
       alert('error'); 
      } 
     }); 
} 

でも、私は簡単にどのようにこれまでCont.php

その選択ボックスの値に基づいて、通常のテーブル、テーブルも同様に動作するかどうかを確認するために私の努力は実を結びませんでした。

boq.php

興味深いことに、私は放火犯はなくなっ警告「エラー」あなたは間違ってAjax機能を使用している

+2

あなたがエラーを取得している場合は、エラーを調査。あなたはネットワークのタブでそれを見ることができます - HTTPステータスコードがそこにあり、またあなたがajaxリクエストをクリックすると、応答本体も見ることができます。それは何がうまくいかなかったかの手がかりを与えます。しかしその後、あなたのワークフローはすべて間違っているようです。 cont_boq.phpからデータをロードするポイントは何ですか?しかし、「成功」ではすぐに 'window.location'を実行します。ページがboq.phpに変更され、最新表示され、ダウンロードしたばかりのものすべてが破棄されます。他のデータ。 – ADyson

+0

ajax successコールバックに別のリンク、つまり 'boq.php'を開いています。これによりブラウザが更新され、すべてのAJAXデータが失われます。返されたテーブルデータをDOMに同じページに挿入する必要があります。 – Junaid

+0

あなたはajaxリクエストを作成していますが、レスポンスはjson( 'dataType: 'json'、')ですが、ファイルにはHTMLが含まれています。 jQueryの '.load()'の使用を検討する必要があります。 'dataType'を' html'に変更してください。 PHPを使って 'include 'boq.php';' – Lewk

答えて

1

の応答を見ることができます必要なのdiv

<div id="boq"></div> 

を持つシンプルなPHPのページです。 成功コールバックでは、それらの間で互換性のない2つのことを行っています。すでにあなたは

  • が返されたデータ
  • あなたがいる場合は、あなたのAJAXに基づいて新しい要素div#boqのレンダリングに必要なすべてのデータが含まれている別のページに

    • リダイレクト:

      あなたの行動を選択してください「エラー」メッセージでアラートを取得すると、エラーコールバックにエラーを伴う戻りデータが含まれる引数が追加されます。

      error: function(data) { console.log(data); }

      あなたはJSON文字列として戻りデータを解析している、これは、戻りデータが壊れて、解析できない、JSON文字列であることを意味します。)

    0

    PHPとスクリプトコードこのコードを試してみてください

    はletestの.jsライブラリを追加します。letest .js library

    <select id="works" class="btn btn-default" style="text-align:left; background-color:#FFF"> 
    <option value=""> Select Work Name</option> 
    <option value="1" style="text-align:left"><?=1?> 
    <option value="2" style="text-align:left"><?=2?> 
    </option> 
    </select> 
    <div id="boq"></div> 
    <script type="text/javascript" src='.js library path'></script> 
    <script type="text/javascript"> 
    $(document).ready(function(){ 
        $('select').change(function(){ 
          var boq = $('select option:selected').val(); 
          $.ajax({ 
           url: 'data/cont_boq.php', 
           //url: 'cont_boq.php', 
           type: 'post', 
           data: {boq:boq}, 
           success: function (data) { 
            $('#boq').html(data); 
           }, 
           error: function(){ 
            alert('error'); 
           } 
          }); 
        }); 
    
    }); 
    </script> 
    

    cont_boq.phpコード

    <table border="2"> 
        <tr> 
         <td>test</td><td><?=$_POST['boq'];?></td> 
        </tr> 
    </table> 
    
    関連する問題