2012-05-03 16 views
-1

私は選択オプションで新しいオプションを選択するたびに、いくつかのテキストフィールドを変更しようとしています。これは私が現在持っているコード、私が間違っているアイデアですか?ありがとう。javascript/php - 選択した変更に基づいてテキストフィールドを変更します。

 <script type="text/javascript"> 
      $("#combo").change(function() { 
      var value = $(this).val(); 
      $.get(document, {type: value}); 
      }); 
     </script> 


     <td class="bold"><label for='addType'>Select Type to Add : </label> 
      <select name="addType" id="combo"> 
       <option value="book">Book</option> 
       <option value="author">Author</option> 
       <option value ="publisher">Publisher</option> 
       <option value="customer">Customer</option> 
      </select> 
     <?php 
      $type['type'] = $_GET['type']; 
      if ($type['type'] == 'author') { 
       print "test"; 
      } 
     ?> 
+1

これを1つのファイルに入力しませんでしたか?あなたはhtml/javascriptから分離されたPHP部分を持っていますか? – Neysor

+0

これは1つのファイルにあります。すべてをPHPタグに含める必要がありますか? – Meowbits

+0

get .get()にはコールバック関数がありません。 –

答えて

0

の$に.get機能は、次のようなものになります。

<div id="response"> 
</div> 

:あなたの戻り値を表示しますID "レスポンス" とご</select>場所のdivをした後

$.get("php_page.php", 
     {type: value}, 
     function(data) { 
      $("#response").html(data) 
    ); 

をこれで、$ .get AJAXリクエストを処理する同じディレクトリ( "php_page.php")に2番目のページを作成するだけです。

<?php 
     echo $_GET['type']; 
?> 

あなたが知らない場合は、PHPはサーバー側の言語です。つまり、ページが読み込まれると、PHPはすでにその作業を完了しています。だから、ページがロードされた後で特別なPHPの力を使う必要があるなら、それはAJAXのためのものです。

+0

ありがとう、私はここから理解して得ることができるかどうかがわかります! – Meowbits

+0

上記のように、 '$ .ajax'関数は通常ajax呼び出しの標準ですので、' $ .get'の代わりにそれを使うことができます –

0

あなたはこれを完全に間違った方法でしています! jQueryのajaxに関するマニュアルをお読みください。ちょうどあなたがあなたのプロジェクトを始めるための手助け

あなたは、あなたのPHPファイルから取得したいあなたの応答から、基本的な構造を区切る必要があります。このDEMO

を参照してくださいHTMLの一部は次のとおりです。

<select name="addType" id="combo"> 
    <option value="book">Book</option> 
    <option value="author">Author</option> 
    <option value ="publisher">Publisher</option> 
    <option value="customer">Customer</option> 
</select> 
<div>Response: <span id="selection"></span></div> 

また、これはPHPで満たされたが、応答はないことでした!

JavaScriptは次のとおりです。

$("#combo").change(function() { 
    $.ajax({ 
     url: "/echo/html/", 
     type: "POST", 
     data: {"html":"Yeah: "+$(this).val()+" is cool!"}, 
     success: function(data) { 
      $("#selection").html(data); 
     } 
    }); 
});​ 

あなたは余分なファイルでこれを置けば、それはいいだろう。 URL /echo/htmlで指定

少なくとも最後のではなく、"PHPファイル"には、以下のん:

​​

・ホープ、このことができますし。すべての最初の

+0

ありがとう!しかし、URLに1つの質問。このファイルとphp_page.phpが同じレベルにある場合、URLは単に「php_page.php」になりますか? – Meowbits

+0

はい!この 'echo/html'はjsfiddleデモでのみ必要です。PHPファイルを更新することができないからです:) – Neysor

0

、このセクション:

<?php 
    $type['type'] = $_GET['type']; 
    if ($type['type'] == 'author') { 
     print "test"; 
}?> 

意志のみ印刷すると、ページが最初にロードし、タイプ= xxxは、URLのクエリ文字列である場合にのみ。あなたがコードはjQueryの部分のために、サーバー側

あるので、それはロードした後、試すページ自体にPHPを実行するカント:

$(document).ready(
    function(){ 
     $('#combo').change(function(){doAjax();}); 
    } 
); 
function doAjax(){ 
    $.get(
     'url', //i think jquery defaults to self if not url is given but you can also use <?php echo $_SERVER['PHP_SELF'];?> 
     {'type' : $('#combo').val()}, 
     function(data){ 
       // what should the ajax call do with the response data? 
     }, 
     "html" 
    ); 
} 

また、あなたが持つに返されたデータを置くためのdivを行う必要があります。 html()は、その最後の要素であったものの末尾に応答を追加しようとするよりも簡単です。

+0

他の例が分からない場合は、これを実装しようとします。ありがとう! – Meowbits

関連する問題