2016-09-29 17 views
0

私は私のヘッダーファイルにドロップダウン要素を持っています。 、php - ドロップダウン後の現在のページをリロードします。

<script> 
$(document).ready(function() { 
    var url = "<?php echo file2.php;?>"; 
    $('#currency').change(function() { 
     $.ajax({ 
      data: $('#switchcurrency').serialize(), 
      type: "POST", 
      url: url, 
      success: function(response) { 
       alert(response); 

      } 
     }); 
    }); 

}); 
</script> 

:これは別のファイルへの投稿、選択した要素のAjaxスクリプトによって処理され

<div class = "currencyswitcher"> 
<span class = "currencylabel"><strong>Currency Switcher</strong> </span> 
<form method="post" id="switchcurrency" name = "switchcurrency"> 
    <select name = "currency" id = "currency" > 
     <option value = "USD"> USD </option> 
     <option value = "KES"> KES </option> 
    </select> 

</form> 
</div> 

:ドロップダウンは、私は私のサイト上でユーザーが選択したい2つの通貨が含まれています私のfile2.phpで私は私のドロップダウンから値を渡して、私はページsitename.php/page1にしてドロップダウンから選択した後、私はページのURLにそれを追加したい、ページsitename.php/page1?currency = USDに更新され、sitename.php/page2上にあった場合、選択時にページがsitename.php/page2に更新されますか?currency = KESなど...

これは私のダンプ以上のことから、私のfile2.php(ファイルAjaxはに投稿された)

if(isset($_POST["currency"])) 
{ 
    $key = key($_POST); 
    $value = $_POST["currency"]; 

    $params = array_merge($_GET, array($key => $value)); 
    $new_query_string = http_build_query($params); 

    $url = (empty($_SERVER['HTTPS'])?"http://":"https://") . $_SERVER['REQUEST_URI'] . "?" . $new_query_string; 
    var_dump($url); 
} 

は私のヘッダページ、すなわち

var_dump($url); = mysiteurl/header.php?currency=USD 

のURLはだからここに私の質問があります返します:でヘッダーのドロップダウン(私のサイトのすべてのページで呼び出される)は、オプションを選択すると、現在選択しているオプションをURLに追加してリフレッシュするようにします。

答えて

0

を試してみてください。

$(document).ready(function() { 
    var url = "<?php echo file2.php;?>"; 
    $('#currency').change(function() { 
     $.ajax({ 
      data: $('#currency').serialize(), 
      type: "POST", 
      url: url, 
      success: function(response) { 
       alert(response); 
      } 
     }).done(function() { 
      window.location.href = window.location.href + "?currency="+$('#switchcurrency').val(); 
     });; 
    }); 
}); 

さらに読む:

http://api.jquery.com/jquery.ajax/

https://developer.mozilla.org/en-US/docs/Web/API/Window/location

+0

優秀なわずかなミスがここにありますけれども、これは動作します:window.location.href = window.location.href + "?currency =" + $( '#switchcurrency')。val();次のようにする必要があります:window.location.href = window.location.href + "?currency =" + $( '#currency')。 – suo

+0

私が逃した可能性のあるもう一つの小さなこと、私がこのようなページにいるとどうなるでしょう:mysiteurl.php /?someparameter。ドロップダウンから選択すると、mysiteurl.php /?someparameter?currency = USDではなくmysiteurl.php /?someparameter&currency = USDになります。このビットの任意のヒント? – suo

+1

は、コード内の選択のIDを修正しました。その他の問題については、 'window.location'オブジェクトのプロパティ(上にリンクされています)を使用してURLにGETパラメータがあるかどうかを判断できます。その決定を行い、あなたの通貨パラメータを(?または&で)追加してください –

0

(あなたは自分の通貨パラメータのキー/値のペアを追加することができている)window.location.hrefプロパティを変更処理するために、あなたのAJAXで.doneコールバックを使用して、この

<script> 
$(document).ready(function() { 
    var url = "<?php echo file2.php;?>"; 
    $('#currency').change(function() { 
     $.ajax({ 
      data: $('#switchcurrency').serialize(), 
      type: "POST", 
      url: url, 
      success: function(response) { 
       //Choose one!! 

       // similar behavior as an HTTP redirect 
        window.location.replace(response); 

       // similar behavior as clicking on a link 
       window.location.href = response; 

      } 
     }); 
    }); 

}); 
</script> 



if(isset($_POST["currency"])) 
{ 
    $key = key($_POST); 
    $value = $_POST["currency"]; 

    $params = array_merge($_GET, array($key => $value)); 
    $new_query_string = http_build_query($params); 

    $url = (empty($_SERVER['HTTPS'])?"http://":"https://") . $_SERVER['REQUEST_URI'] . "?" . $new_query_string; 
    exit($url); 
} 
+0

あなたの答えのおかげで、私は私の質問で述べたように、このヘッダページに私をリダイレクトし – suo

関連する問題