2017-06-14 1 views
0

J'ai un menu de sélection qui présente sans recharger la page suivante:Après ajax réexécuter php

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

Il présentera à la page en cours comme suit, sans recharger la page

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

Le résultat d'un changement dans le menu d'options est une fenêtre popup avec tout le code de la page renvoyé en écho.

Ce que je veux faire sur la page est d'utiliser $ _POST [ « option »] qui est soumis et recalcule un prix par exemple

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

Le sont plusieurs endroits où je voudrais utiliser le soumis valeur d'option

Toute aide bienvenue Désolé s'il est très évident

+0

est que cela fonctionne pour vous ??? Voir l'appel ajax sur notre console de navigateur et pouvez-vous faire un appel ajax à la même page en utilisant 'url:" $ _SERVER ['HTTP_HOST']. $ _SERVER ['REQUEST_URI']; ",' ??? – webDev

+0

'url:" $ _SERVER ['HTTP_HOST']. $ _SERVER ['REQUEST_URI']; "' n'a pas l'air correct. Vous ne faites pas écho à ces variables PHP. JS essaiera de publier sur cette chaîne sous forme d'URL. –

+0

Vous ne pouvez pas faire cela. Vous devriez avoir seulement un morceau de page qui ne recharge pas –

Répondre

1

la seule façon fait une page PHP qui fait le calcul

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>"); 
    }); 
}); 

Fiddle ==>https://jsfiddle.net/tonysamperi/4dbwwn3g/

AVEC 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

Merci pour votre réponse, le problème est que tout est renvoyé comme dans un div, ce que je voulais juste utiliser la valeur affichée de l'option. Savez-vous si cela est possible – Ria

+0

j'ai fait quelques ajustements. Check'em dehors s'il vous plaît. De toute façon, la seule façon de faire ce que vous demandez est de cette façon. –

+0

A moins que vous ne convertissiez page2.php en données JSON et que vous l'utilisiez –