0

ページの読み込み時にデータベースからデータを読み取り、お気に入りの住所などのユーザー固有のデータをページの選択ボックスに入力するjqueryモバイルアプリがあります。うまく機能する選択されたオプションを削除する ajax スクリプトを実装しました。しかし、ページをリロードせずに選択ボックスを更新する方法を見つける必要があります。AJAX が必要な方法だと思いますが、どこから始めればよいかわかりません。データベースを読み取るphpファイルと、返されたデータを取得して選択ボックスに入力するjavascriptを再実行する必要があると思います。

index.php (前編)

<?php 
$show_faves_pass=true;
$show_faves_cctr=true;
include('../includes/favourites.inc');
?>   

お気に入り株式会社

$js_str='';

if ($show_faves_addr){

    // Postgres sql statement here

    $addr_json=json_encode($addr_rows);
    $js_str.="var fave_addresses=$addr_json;\n";
}

if ($show_faves_cctr){

    // Postgres sql statement here

    $cctr_json=json_encode($cctr_rows);
    $js_str.="var fave_costcentres=$cctr_json;\n";
}
if (strlen($js_str)>0){
    echo "<script type='text/javascript'>\n$js_str\n</script>\n";
}

index.php (後編)

//populate favourites pickers
    function findFave(arr,key,val){
      var found=null;
      $.each(arr,function(i,v){
        if (v[key]==val){
          found=v;
        }  
      });
      return found;
    }

var pass_fave_sel=$('select#pass_fave_picker');
    $.each(fave_passengers,function(i,fave){
      pass_fave_sel.append("<option value='"+fave.passenger_details_id+"'>"+fave.passenger_nickname.replace("'","\'")+"</option>");
    });


var cctr_fave_sel=$('select#cctr_fave_picker');
    $.each(fave_costcentres,function(i,fave){
      cctr_fave_sel.append("<option value='"+fave.cost_centre_id+"'>"+(fave.cost_centre_code+" ("+fave.cost_centre_nickname+")").replace("'","\'")+"</option>");
    });

うまくいけば、これがすべて理にかなっています。どんな助けでも大歓迎です。よろしくお願いします!

4

1 に答える 1

0

すべての jQM 要素には、スタイル変更に使用される独自の更新方法があります。

例えば:

リストビューには次のものがあります。

$('#listviewID').listview('refresh');

例を次に示します: http://jsfiddle.net/Gajotres/AzXdT/。これは、XML データから動的に生成されたリストビューです。

ボタン要素には次のものがあります。

$('#buttonID').button('refresh');

例を次に示します: http://jsfiddle.net/Gajotres/K8nMX/

スライダーには次のものがあります。

$('#sliderID').slider('refresh')

そして、あなたはこれを使うつもりです:

選択メニューには次のものがあります。

$('select').selectmenu('refresh', true);

これで、ここにパターンが表示されます。更新するには、常にコンポーネント名を 'refresh' パラメーター付きの s 関数として使用します。

ページ全体のスタイル変更を行う場合は、このメソッドを使用する必要があります。

編集 :

   $.ajax({url: server_url,
        data: save_data,
        beforeSend: function() {
            $.mobile.showPageLoadingMsg(true);
        },
        complete: function() {
            $.mobile.hidePageLoadingMsg();
        },
        success: function (result) {
           // Here delete elements from select box
        },
        error: function (request,error) {
           // Throw an error
        }
    });
于 2013-01-22T09:27:56.090 に答える