2017-06-14 28 views
0

後,我有沒有重新加載頁面如下提交了一份選擇菜單:阿賈克斯重新運行PHP

<select id="option" name="option"> 
<option value="15">15/option> 
<option value"30">30</option> 
<option value"90">90</option> 
</select> 

將提交當前頁面如下,無需重新加載頁面

<script type="text/javascript"> 
    $('#option').change(function(){ 
     var option_val = $(this).val(); 
     $.ajax({ 
     type: 'post', 
     url: "$_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];", 
     data: "option="+option_val, 
     success: function(data) 
     { 
      window.alert(data) 
     } 
     }); 
    }); 
</script> 

的選項菜單中的更改結果是一個彈出窗口,其中包含頁面的所有代碼。

我想在頁面上做的是使用$ _ POST [「選項」]被提交,重新計算例如價格

<body> 
//some code and div's 
<?php 
if (isset($_POST['option'])) { 
    $option = $_POST['option']; 
$price= $row_product['price'] + $option; 
echo $price; 
} ?> 
</body> 

的幾個地方,我想使用您提交的期權價值

任何幫助,歡迎 很抱歉,如果這是很明顯的

+0

這是對你的作品???在瀏覽器控制檯上查看ajax調用,並且可以使用'url:「$ _SERVER ['HTTP_HOST']對同一頁進行ajax調用。$ _SERVER ['REQUEST_URI'];」,'??? – webDev

+0

'url:「$ _SERVER ['HTTP_HOST']。$ _SERVER ['REQUEST_URI'];」'看起來不正確。你沒有迴應那些PHP變量。 JS會嘗試以URL的形式發佈到該字符串。 –

+0

你不能那樣做。你應該只有一頁不能重新加載 –

回答

1

唯一的辦法就是做一個PHP頁面,做計算

HTML/page1.php中

<select id="option" name="option"> 
    <option value="15">15</option> 
    <option value="30">30</option> 
    <option value="90">90</option> 
</select> 
<div id="dynamic"> 
    <p>DEFAULT CONTENT</p> 
</div> 

HTML /使page2.php

$option = 0; 
if(isset($_GET["option"])){ 
    $option = $_GET["option"]; 
} 
//do calculations 
echo "<my-html-stuff>lorem ipsum</my-html-stuff>"; 

JS

var dynamic = $("#dynamic"); 
$('#select').on("change", function() { 
    var selected = $(this).val(); 
    dynamic.load("page2.php?option=" + selected, function() { 
     dynamic.html("<p>CONTENT OPTION "+selected+"</p>"); 
    }); 
}); 

小提琴==>https://jsfiddle.net/tonysamperi/4dbwwn3g/

使用JSON

使page2.php

header('Content-Type: application/json'); 

$option = 0; 
if(isset($_GET["option"])){ 
    $option = $_GET["option"]; 
} 
$response = ["result" => $option]; 
echo json_encode($response); 

JS

$('#select').on("change", function() { 
    var selected = $(this).val(); 
    $.get("page2.php?option=" + selected, function(response) { 
     //do stuff with data 
     console.debug("RESPONSE", response); 
    }); 
}); 
+0

感謝您的回覆,問題是所有的迴應都在div中,我想要的只是使用選項的發佈值。你知道這是否可能 – Ria

+0

我做了一些調整。請檢查出來。 無論如何,做你要求的唯一方法就是這樣。 –

+0

除非你讓page2.php回顯JSON數據並使用它 –