0

これが私の問題です:

  • 私のホームページには、都市名の選択ボックスがあります。ユーザーが値を選択すると、別の (内部) ページに移動します。
  • その内部ページには、ユーザーが直接開いた場合 (つまり、ホームページから来ていない場合) にのみ、都市名を含むまったく同じ選択ボックスがあります。それは、都市を選択することが私の検索プロセスのステップ 1 だからです。
  • そのため、ユーザーが内部ページに直接アクセスした場合、ユーザーは都市を選択し、その都市の値に基づいて検索する jquery スクリプトを起動するフォームを送信します。ページ レイアウトは変更されますが、アドレスは同じままです (jquery は要素を再配置し、左側の列にフィルター オプションを表示します)。
  • ユーザーがホームページから到着した場合、ユーザーはすでにホームページで都市を選択しているので、内側のページで都市の選択をスキップしてもらいたい.
  • ホームページの都市値を取得するために totalStorage プラグインを使用しています

基本的には、 isset($_POST['city-homepage']); をチェックして、内部ページにアクセスする 2 つの方法を分離したいと考えています。false の場合、ユーザーは直接アクセスしているため、すべて問題ありません。ただし、true の場合は、すぐにその jquery 関数 (search_workers()) を呼び出し、選択ボックスの値を $.totalStorage('city') に自動的に設定する必要があります。ホームページで選ばれました。

function searchWorkers(){
    var result=false;

    $.ajax({
        url: "<?php echo $this->action("search_workers"); ?>",
        async: false,
        type: "POST",
        data: {
            city: $("select[name=city]").val(),
            help_wanted: $("#help_wanted").val(),
            gender: $("#gender").val()
        }
    }).done(function(msg){
        result=JSON.parse(msg);
    });

私がやりたいことをするためのベストプラクティスは何ですか? 私はJavascriptにあまり詳しくないので、私の質問がばかげている場合は理解してください。

ありがとう!

4

2 に答える 2

0

$_POST['city-homepage'] が設定されているかどうかを PHP ファイルで確認する必要があります。その場合は、その情報を処理し、それに応じてページをレイアウトする必要があります。ドロップダウンで選択した都市をphpファイルに設定することもできます。

<?php
    if(isset($_POST['city-homepage'])) {
    //output the page with all the layout and information needed since the user
    //has selected the city already. And when creating the drop down box:
     echo '<select name="city" onchange="searchWorkers()">';
     foreach($cities as $city) {    // assuming $cities is an array containing
                                    // the name of each city in the list
     if($city==$_POST['city-homepage'])
          $selected='selected="selected"';
     echo '<option value="'.$city.'" '.$selected.'>'.$city.'</option>';
     $selected='';
        }
    }
    else {
       //display the page as though the user has not selected a city
      }
于 2012-10-01T21:08:59.970 に答える
0

それで、私は解決策を見つけることができました。

ユーザーがホームページで都市を選択すると、($.totalStorage を使用して) Cookie に保存されます: ref = 'home' AND city-hp = selected value フォームのアクションにより、実際の検索ページに移動します。

彼がそこに着いたら、ドキュメントの準備が整った関数で、ref 変数の値「home」をチェックします。true の場合、worker_search 関数を呼び出し、次の行で ref 変数を新しい値に設定します (この時点から、ホームページから何も必要ないため必要です)。false の場合 (ユーザーがホームページからではなく直接アクセスした場合)、ref を「inner」に設定し、ユーザーが最初に都市を選択しようとしているため、ここでは関数を呼び出しません。

私の関数 worker_search では、ref を再度評価し、結果に基づいて select#city の値を設定します。 '、値は通常どおりに設定されます (ユーザーが選択した都市に従って)

そうすれば、どちらの場合でも、worker_search 関数は select#city 変数の値を取得します。

于 2012-10-02T14:01:27.887 に答える