2012-05-03 62 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

但你沒有在一個文件中輸入?你有PHP部分從你的HTML/JavaScript分離? – Neysor

+0

它在一個文件中,我是否需要在php標籤中包含所有內容? – Meowbits

+0

您的get .get()沒有回調函數。 –

回答

0

的$不用彷徨函數應該是這個樣子:

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

</select>地方後,ID爲 「響應」,這將顯示您的返回值一個div:

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

現在您只需要在同一個目錄(「php_page.php」)中創建第二個頁面,它將處理您的$ .get AJAX請求:

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

謝謝!關於網址的一個問題雖然。如果我在同一級別上有這個文件和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"; 
}?> 

將只打印網頁時首先加載,並且僅當type = 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