2017-03-24 37 views
1

我應該首先說我對服務器端編程非常陌生。我正在嘗試使用AJAX獲取其更改的價值。使用AJAX和POST方法在PHP中獲取HTML值

我的AJAX代碼(ajaxCode.php)

$(document).ready(function() { 
     $('select[name="selectBox"]').change(function(){ 
      var value = $(this).val(); 
      $.ajax({ 
        type: 'POST', 
        url: 'calculator.php', 
        data: {valueChange: value }, 
        dataType: 'html' 
      }); 
      alert(value); 
     }); 
    }); 

我的HTML代碼與選擇框(Calculator.php中)

<select name ="selectBox"> 
     <option value="1">Value 1</option> 
     <option value="2">Value 2</option> 
     <option value="3">Value 3</option> 
    </select> 

<?php 
$status = $_POST['changeStatus']; 
echo $status; 
?> 

這似乎並沒有工作。狀態會提醒但不會被回顯。我究竟做錯了什麼?提前致謝?

+0

但是......但是......你已經在你的DOM中有了這個selectBox,但是你也在你的calculator.php中回顯它。你預計會發生什麼? – amenadiel

+0

我應該把我的PHP代碼放在一個單獨的文件中嗎? –

+3

請記住,PHP首先運行生成客戶端頁面,然後頁面發送給用戶。你的代碼正在做的是生成一個新的頁面,其底部有回顯(對你的AJAX的迴應,你不會做任何事情)。 –

回答

1

您可能希望通過ajax發送所選框的值,然後更改從ajax獲取的狀態。

服務器站點:Calculator.php中

客戶端:

<script> 
$(document).ready(function() { 
    $('select[name="selectBox"]').change(function(){ 
     var value = $(this).val(); 
     $.ajax({ 
       type: 'POST', 
       url: 'calculator.php', 
       data: {valueChange: value }, 
       dataType: 'html' 
     }).done(function(response){ 
      $('.response-holder').html(response); 
     }); 
    }); 
}); 
</script> 

<select name ="selectBox"> 
    <option value="1">Value 1</option> 
    <option value="2">Value 2</option> 
    <option value="3">Value 3</option> 
</select> 
<div class="response-holder"></div> 
+0

是的。這正是我所回答的。不知何故,它在我的回答中有着過於廣泛的含義,事實證明你對OP更清楚易懂。 – amenadiel

+0

所以現在選擇框的值是在客戶端的「響應持有者」,我可以通過_POST或_GET獲取這個值到另一個PHP文檔中,對嗎? –

+0

@JonGoe在「響應持有者」中,你將擁有從calculator.php迴應的一切。通過_POST或_GET,您將獲得選擇框中的選定內容。 –

0

接收Ajax調用應該是在它自己的文件中的代碼,而只回聲您需要檢索什麼,而不是整個你開始的內容。例如,只是回顯狀態。

比方說,這是你的HTML

<select name ="selectBox"> 
    <option value="1">Value 1</option> 
    <option value="2">Value 2</option> 
    <option value="3">Value 3</option> 
</select> 

<script> 
$(document).ready(function() { 
    $('select[name="selectBox"]').change(function(){ 
     var value = $(this).val(); 
     $.ajax({ 
       type: 'POST', 
       url: 'calculator.php', 
       data: {valueChange: value }, 
       dataType: 'html' 
     }); 
     alert(value); 
    }); 
}); 
<script> 

那麼這個可能是你Calculator.php中

<?php 
    $status = $_POST['changeStatus']; 
    echo $status; 
?> 

不過,話又說回來,你正在做一個Ajax調用並沒有做任何事情與其迴應。要收到被Calculator.php中回答,你可以做

<select name ="selectBox"> 
    <option value="1">Value 1</option> 
    <option value="2">Value 2</option> 
    <option value="3">Value 3</option> 
</select> 
<div id="response"></div> 
<script> 
$(document).ready(function() { 
    $('select[name="selectBox"]').change(function(){ 
     var value = $(this).val(); 
     $.ajax({ 
       type: 'POST', 
       url: 'calculator.php', 
       data: {valueChange: value }, 
       dataType: 'html' 
     }).then(function(response) { 
      jQuery('#response').html('Ajax answered: '+response); 
     }); 
     alert(value); 
    }); 
}); 
<script> 
+0

我在calculator.php中使用PHP代碼,在htmlCal.html中使用HTML + AJAX。當選擇一個選項時,該值將被提醒,但changeStatus在PHP文件中未定義。爲什麼會這樣呢?謝謝。 –

1

該工程確定:

<!DOCTYPE html> 
<html> 
<head> 
    <title></title> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
    <script type="text/javascript">  
     $(document).ready(function() { 
      $(document).on("change", ".selectBox", function(){ 
       var v = $(this).val(); 
       $.post("ajax.php", { changeStatus: v , time: "123" }, function(data) { 
        alert("From file: " +data);    
       });     
      }); 
     }); 
    </script> 
</head> 
<body> 
<select name ="selectBox" class="selectBox"> 
    <option value="1">Value 1</option> 
    <option value="2">Value 2</option> 
    <option value="3">Value 3</option> 
</select> 
</body> 
</html> 

和ajax.php

<?php 
$status = $_POST['changeStatus']; 
echo $status; 
?> 
0

在你的腳本Calculator.php中試試這個。

<?php 
    $status = $_POST['valueChange']; 
    echo $status; 
?> 

這是否給你你想要的結果?