2017-06-14 77 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数据并使用它 –